-1

可能重复:
用 preg_replace 替换 ereg_replace

我已经升级到 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);
4

1 回答 1

1

应该是一样的,你只需要添加分隔符(可能是“/”,“~”或“@”,你最喜欢没有“)。在替换字符串中你必须使用“$1”而不是“ \1"!

它看起来像这样:

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

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

/edit:您可以在分隔符后添加“i”(不带“),因为标签可能用大写字母书写,“i”是代表“不区分大小写”的修饰符。

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

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

题外话:在 html4 中你可能有这样的东西:

<tagname name="<"> 

这意味着通过过滤没有“<”或“>”的所有内容,您的正则表达式将不会使用这些标签触发!但它相当罕见。

于 2012-04-09T19:36:22.223 回答