2012-04-09 62 views
-1

可能重复:
replace ereg_replace with preg_replace转换ereg_replace到的preg_replace在PHP

我已经升级到PHP 5.3,我需要知道如何将这些标签转换成的preg_replace。

任何想法?

$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); 

回答

1

它应该是一样的,你只需要添加分隔符(可能是“/”,“〜”奥得“@”,你喜欢什么最没有“)。在replacementstring你必须用“$ 1”而不是“\ 1”

它应该是这样的:

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

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

/编辑:您可以在分隔符后加“I”(不带“),因为标签可能在被写入大写字母,“我”是一个修饰语,代表“无情感”。

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

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

东西题外话:在HTML4你可能有这样的事情:

<tagname name="<"> 

这意味着由没有“<”或“>”过滤一切,你的正则表达式不会触发这些标签!但它相当罕见。