Ich lasse eine ganze Reihe von Dokumenten durch die unten aufgeführte Schleife laufen. Eigentlich soll die Geschichte mit $lastfound da überhaupt nicht rein. Aber - für mich unerwartet - bei diesem Eingabestring findet er auch eine Übereinstimmung und hängt sich in einer Endlosschleife auf. Den gleichen Eingabestring und den gleichen Ausdruck habe ich zum Vergleich auch noch einmal im "The Regex Coach" eingegeben. Der findet keine Übereinstimmung. Was geht hier vor sich? [17]

Eingabestring, $evaluated.
<DIV STYLE="background-image:\0075\0072\006C\0028'\006a\0061\0076\0061\0073\0063\0072\0069\0070\0074\003a\0061\006c\0065\0072\0074\0028.1027\0058.1053\0053\0027\0029'\0029">

$lastfound = ''; while(preg_match('/##E#(\w*)###/', $evaluated, $Array)) { $found = $Array[1]; if($found == $lastfound) { break; } $lastfound = $found; $evaluated = preg_replace("|##E#$found###|i", "$Eval[$found]", $evaluated); }
Ausgabe:
<DIV STYLE="background-image:##E#attack###75##E#attack###72##E#attack###6C##E#attack###28'##E#attack###6a##E#attack###61##E#attack###76##E#attack###61##E#attack###73##E#attack###63##E#attack###72##E#attack###69##E#attack###70##E#attack###74##E#attack###3a##E#attack###61##E#attack###6c##E#attack###65##E#attack###72##E#attack###74##E#attack###28.1027##E#attack###58.1053##E#attack###53##E#attack###27##E#attack###29'##E#attack###29">