Regexp und (un)greedy

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Regexp und (un)greedy

    ich hab mal zum test nen kleines script geschrieben dass ähnlich dem forencode aus [ b] und [ /b] (natürlich ohne leerzeichen) ein <b> und </b> macht.
    schreibe ich jetzt einen testtext:

    [ b]bla[ /b] [ b]bla2[ /b]

    dann gibt es zwei möglichkeiten diesen mit ungreedy zu behandeln:
    PHP Code:
    $text preg_replace("#\\[b\\](.*?)\\[/b\\]#si",'<b>\\1</b>',$text); 
    oder
    PHP Code:
    $text preg_replace("#\\[b\\](.*)\\[/b\\]#siU",'<b>\\1</b>',$text); 
    der unterschied liegt in dem fragezeichen und dem U. die frage ist jetz, warum behandelt er beide als ungreedy bzw. warum funktioniert
    PHP Code:
    $text preg_replace("#\\[b\\](.*?)\\[/b\\]#siU",'<b>\\1</b>',$text); 
    nicht als ungreedy und was ist der unterschied zwischen den oberen beiden?

  • #2
    http://www.dclp-faq.de/q/q-regexp-gierig.html

    Comment

    Working...
    X