Mailinglisten-Archive |
Thomas Koudela schrieb am 23.09.2006:
>Hallo Stephan.
>
> > Ich tüftle gerade an einem regulären Ausdruck.
> > Ich möchte alle Html - Tags aus einem Html - Skript entfernen
> > und suche nach einer Lösung.
> >
> > [...]
> >
> > $inhalt1 = preg_replace("#(<)([\w\W]+)(>)#","",$inhalt);
> >
> > Leider loescht diese Variante den gesamten Text. Ich möchte nur
>die
> > Html - Kommandos entfernen. Also eine Aussage wie 'nicht <'
>einbauen ?
>
>Nach den Standardeinstellung wird die Pattern Syntax greedy
>interpretiert, d.h. preg_replace versucht so viele Zeichen wie
>möglich
>bei [\w\W]+ zu finden. "<p>Dies ist <b>ein</b> (Ab-)Satz.</p>" wird
>dadurch zu "", weil nach der Klammer auf, die letzte verfügbare
>Klammer
>gesucht wird, bei der [\w\W]+ dazwischen passt.
>
>Dies kannst Du ändern indem Du entweder den Quantifier Minimizer "?"
>verwendest oder mit "(?U)" PCRE_UNGREEDY setzt.
>
>Das sieht dann so:
>'/<(.*?)>/'
>oder so:
>'/(?U)<.*>/'
>oder mit minimalen Unterschieden so:
>'/<[\w\W]+?>/'
>oder so:
>'/(?U)<[\w\W]+>/'
>aus.
>
>Gruß, Thomas
Hallo und danke für die Info !
Die Idee mit UNGREEDY ist Klasse.
Gibt es nicht noch eine Ausdrucksform mit der gesagt wird 'nicht <' ?
M.f.G.
Stephan
php::bar PHP Wiki - Listenarchive