Avatar billede egeriis Nybegynder
06. december 2007 - 21:13 Der er 5 kommentarer og
1 løsning

Indhold mellem <div> og nærmeste </div>

Hej eksperter,

Jeg har et problem med at få mit reg.exp. til at fungere helt perfekt.

Jeg er nået så langt, at mit reg.exp. stopper ved en af de karakterer som burde tolkes som en sætning. Her er mit reg.exp.:

/\<div\>([^\<\/div\>]*)/i

Problemet er her, at i stedet for at tolke </div> som en sætning, stopper den ved at møde blot et enkelt af de tegn.

Det der er meningen er, at jeg vil hente alt indhold mellem en <div> og den nærmeste </div>, altså søger jeg efter alt andet indhold, end "</div>".


På forhånd tak for hjælpen! :)
Avatar billede nielle Nybegynder
06. december 2007 - 21:20 #1
Hvorfor ikke bare:

#<div>(.*?)</div>#i

?
Avatar billede nielle Nybegynder
06. december 2007 - 21:24 #2
Som du allerede har erfaret så betyder:

[^</div>]

ikke "noget som ikke er teksten "</div>", men derimod:

"noget som hverken er et '<' eller et '/' eller et 'd' eller et 'i' eller et 'v' eller et '>'"

og det er jo noget helt andet.



Forresten, da '<' og '>' ikke har nogen speciel betydning i regexp skal de ikke escapes.
Avatar billede egeriis Nybegynder
06. december 2007 - 21:50 #3
Fordi at når jeg, som jeg forresten har behov for, tilføjer s i enden, dvs som modifier, så går det galt. Så er det ligesom om at den fortsætter indtil den sidste </div> den kan finde, i og med at '.' er alle tegn, inkl. <, /, d, i, v og >.

Er der ikke nogen mulighed for at få maskinen til at tolke </div> som en streng for for en række tegn? :)
Avatar billede nielle Nybegynder
06. december 2007 - 21:55 #4
Med det lille '?' jeg har inkluderet er matchningen ændret fra den normale "grådige" (eng. greedy) til at være "doven" (eng. lazy). Den fortsætter derfor ikke mere til og med den aller sidste </div> men stopper ved den aller første den finder.
Avatar billede egeriis Nybegynder
09. december 2007 - 19:30 #5
Næh hvor smart :-)

Jeg har også været lidt forvirret de steder hvor de i PHPs dokumentation har nævnt ordet "greedy".. Men man lærer jo noget hver dag.

Tak for hjælpen! Smid et svar og få en belønning :)
Avatar billede nielle Nybegynder
09. december 2007 - 22:26 #6
Svar :^)
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

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