Avatar billede ux226 Nybegynder
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.
Avatar billede jensgram Nybegynder
20. juni 2006 - 13:18 #1
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.
Avatar billede jensgram Nybegynder
20. juni 2006 - 13:18 #2
gær = gæt, even ;)
Avatar billede jensgram Nybegynder
20. juni 2006 - 13:21 #3
#<td.*>(.*)</td>#is
Avatar billede nielle Nybegynder
20. juni 2006 - 13:22 #4
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.
Avatar billede mm12010 Nybegynder
20. juni 2006 - 13:23 #5
<td.*?>(.*)<\/td>

hvis ikke jeg husker helt galt sørger et spørgsmålstegnet før at dit udtryk macther den kortest mulige streng...
Avatar billede nielle Nybegynder
20. juni 2006 - 13:23 #6
Ahhhh, vi er vist enige ;^)
Avatar billede nielle Nybegynder
20. juni 2006 - 13:24 #7
20/06-2006 13:23:30> Ja det er jo nok den!
Avatar billede nielle Nybegynder
20. juni 2006 - 13:25 #8
Et ?-tegn giver ganske rigtigt "lazy matchning":

#<td.*?>(.*?)<\/td>#is
Avatar billede nielle Nybegynder
26. juni 2006 - 18:10 #9
ux226> Hvad med med noget respons?
Avatar billede ux226 Nybegynder
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.
Avatar billede nielle Nybegynder
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.
Avatar billede mm12010 Nybegynder
27. juni 2006 - 08:34 #12
selv tak :o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester