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]: 不明な修飾子 ']'

誰かが preg_replace の修正を手伝ってくれませんか

4

2 に答える 2

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 に答える
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 に答える