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