0

我将我的 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_replacepreg_replace我收到警告:

消息:preg_replace() [function.preg-replace]: Unknown modifier ']'

有人可以帮我修复 preg_replace

4

2 回答 2

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。

于 2013-03-19T00:04:05.533 回答
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);

我已经在这个表达式中添加了分隔符(~)。尝试。

于 2013-03-19T00:05:15.680 回答