Mailinglisten-Archive |
Hallo Stefan, Stefan Brueckmann wrote: > Hallo Liste, > > ich möchte Text zwischen einem Anfangsmarker und dem nächsten > Endmarker löschen > > Also wie folgt: > > $inhalt = " > /**<!no_comment> > irgendwelche sinnreichen Kommentare > <!/no_comment>*/ > wichtiger Code > /**<!no_comment>noch ein Kommentar <!/no_comment>*/ > > mehr wichtiger Code > "; > > > Raus kommen soll folgendes > $inhalt = " > wichtiger Code > > mehr wichtiger Code > "; > > > Mein Ansatz ist folgender > $inhalt = ereg_replace("/\*\*<!no_comment>(.*)<!/no_comment>\*/", "", > $inhalt); > > Nur löscht der mir alles zwischen dem ersten Anfangsmarker und dem > Endmarker > > Also es kommt leider folgendes heraus: > $inhalt = " > mehr wichtiger Code > "; > > Und wie jeder sieht, fehlt dann ja wichtiger Code ;-) > > Wie muss ich als ändern? verwende besser *preg* die alten ereg funktionen sind nicht so performant. Das Problem an deinem Pattern ist, dass "/.*/" zu gefräßig ist. Du muss ihm sagen, dass er nur das nötigste matchen soll. Dies tust du mit "/.*?/". Der Code müsste dann funktionieren: $inhalt = preg_replace('|/\*\*<!no_comment>.*?<!/no_comment>\*/|s','',$inhalt); grüße Martin
php::bar PHP Wiki - Listenarchive