Mailinglisten-Archive |
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
php::bar PHP Wiki - Listenarchive