-1

重複の可能性:
ereg_replace を preg_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);

/編集: タグは大文字で記述される可能性があるため、区切り文字の後に "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 に答える