ereg_replace代码

时间:2013-03-18 23:46:53

标签: php preg-replace ereg-replace

我将我的php更新为5.3,我的ereg_replace有问题

$txt = ereg_replace("<(/)?(font|span|div|del|ins)[^>]*>","",$txt); 
$txt = ereg_replace("<([^>]*)(class|lang|style|size|face)=(\"[^\"]*\"|'[^']*'|[^>]+)([^>]*)>","<\\1>",$txt);
$txt = ereg_replace("<([^>]*)(class|lang|style|size|face)=(\"[^\"]*\"|'[^']*'|[^>]+)([^>]*)>","<\\1>",$txt);

如果我将ereg_replace更改为preg_replace,我会收到警告:

消息:preg_replace()[function.preg-replace]:未知修饰符']'

有人可以帮我修复preg_replace

2 个答案:

答案 0 :(得分:1)

这是因为你根本没有模式分隔符。你需要添加它们。

试试这个

$pattern1 = '#<(/)?(font|span|div|del|ins)[^>]*>#';
$pattern2 = '#<([^>]*)(class|lang|style|size|face)=(\"[^\"]*\"|'[^']*'|[^>]+)([^>]*)>#';
$txt = preg_replace($pattern1, '', $txt);
$txt = preg_replace($pattern2, '<\\1>', $txt);

但更好的是,根本不使用正则表达式试图像这样解析HTML。

答案 1 :(得分:1)

$txt = preg_replace("~<(/)?(font|span|div|del|ins)[^>]*>~","",$txt); 
$txt = preg_replace("~<([^>]*)(class|lang|style|size|face)=(\"[^\"]*\"|'[^']*'|[^>]+)([^>]*)>~","<\\1>",$txt);
$txt = preg_replace(~"<([^>]*)(class|lang|style|size|face)=(\"[^\"]*\"|'[^']*'|[^>]+)([^>]*)>~","<\\1>",$txt);

我已经为这个表达式添加了分隔符(〜)。尝试。