20. juni 2006 - 13:09
Der er
11 kommentarer og 1 løsning
Match af tag i tag
Dette udtryk: #<td.*>(.*)</td>#i matcher glimrende på indholdet af <td>-celler, bortset fra hvis cellen indeholder f.eks. et <a href="..."> tag. Hvordan kan det være? Jeg benytter preg_match i PHP.
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
Er du sikker på, at det ikke er fordi der er linieskift? . matcher ikke newlines som udgangspunkt - så skal du have fat i DOT_ALL-modifieren. Rent gær, selvfølgelig.
For det første bør du modificere dit mønster til: #<td.*>(.*?)</td>#i For det andet er der ingen grund til at en <a href="..."> inden i cellen skulle ødelægge din match. Med mindre at det, at den er der, betyder at der så også er sat linjeskift ind i cellen. Men dette er jo så mere en indirekte konsekvens af a-taggen: For at gøre din matchning hårdfør over for at der gerne må være linjeskift sættes der en s-modifier på: #<td.*>(.*?)</td>#is S står for at den skal behandle teksten som en "single line" - som en enkelt lang linje.
<td.*?>(.*)<\/td> hvis ikke jeg husker helt galt sørger et spørgsmålstegnet før at dit udtryk macther den kortest mulige streng...
Ahhhh, vi er vist enige ;^)
20/06-2006 13:23:30> Ja det er jo nok den!
Et ?-tegn giver ganske rigtigt "lazy matchning": #<td.*?>(.*?)<\/td>#is
ux226> Hvad med med noget respons?
26. juni 2006 - 20:56
#10
Ja, undskyld. Det er dårlig stil. Lazy matching med ? klarede det. Der er ingen linjeskift i teksten. Tak for de gode forslag. Points på vej hvis der bliver posted et svar.
26. juni 2006 - 21:57
#11
De bør vist gå til mm12010 :^) ... selvom jeg vil anbefale at det *også* kommer ?-tegn på inde imellem <td>-tagnene.
27. juni 2006 - 08:34
#12
selv tak :o)
Kurser inden for grundlæggende programmering