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