2012-04-09 18 views
-1

Mögliche Duplizieren:
replace ereg_replace with preg_replaceconvert ereg_replace preg_replace in PHP

Ich habe mit PHP Upgrade 5.3 und ich muss wissen, wie diese Tags zu preg_replace konvertieren.

Irgendwelche Ideen?

$html = ereg_replace("<(/)?(font|span|del|ins)[^>]*>", "", $html); 

// then run another pass over the html (twice), removing unwanted attributes  
$html = ereg_replace("<([^>]*)(class|lang|style|size|face)=(\"[^\"]*\"|'[^']*'|[^>]+)([^>]*)>", "<\\1>", $html); 
$html = ereg_replace("<([^>]*)(class|lang|style|size|face)=(\"[^\"]*\"|'[^']*'|[^>]+)([^>]*)>", "<\\1>", $html); 

Antwort

1

Es sollte gleich sein, müssen Sie nur das Trennzeichen hinzufügen müssen (möglicherweise „/“, „~“ oder „@“, was Sie wie die meisten ohne „). In der replacementstring Sie müssen verwenden "$ 1" statt "\ 1"

es würde wie folgt aussehen:

$html = preg_replace("~<(/)?(font|span|del|ins)[^>]*>~","",$html); 

$html = preg_replace("~<([^>]*)(class|lang|style|size|face)=(\"[^\"]*\"|'[^']*'|[^>]+)([^>]*)>~", "<$1>", $html); 

/edit: Sie könnte hinzufügen "i" (ohne „) nach dem Trennzeichen, da Tags in geschrieben werden könnte Großbuchstaben, "i" ist ein Modifikator, der für "case-insensetive" steht.

$html = preg_replace("~<(/)?(font|span|del|ins)[^>]*>~i","",$html); 

$html = preg_replace("~<([^>]*)(class|lang|style|size|face)=(\"[^\"]*\"|'[^']*'|[^>]+)([^>]*)>~i", "<$1>", $html); 

Etwas off topic:

<tagname name="<"> 

was bedeutet, durch alles, was das Filtern ohne "<" oder ">", Ihre regex wont Trigger mit diesen Tags: in HTML4 Sie so etwas wie dieses haben könnte! Aber es ist ziemlich selten.