Das Problem bei dir war wohl, dass nach dem "ENDE" noch ein "D" kam und + schnappt sich normalerweise soviel wie es nur bekommen kann, also wurde das "E" noch zum String gezählt und das "NDED" als Abschlusssequenz betrachtet. Das Verhalten kannst du beispielsweise im ganzen RegEx-Ausdruck mit dem U-Modifier ("/.../U") abstellen und + von "greedy matching" auf "lazy matching" umschalten, oder das etwas lokaler nur für das aktuelle + durch anfügen eines ? umschalten.

Nachlesen kannst du das ganze u.a. unter:
http://www.php.net/manual/en/regexp....repetition.php -- für greedy und lazy matching
http://www.php.net/manual/en/referen....modifiers.php -- für "Modifiers"