web-dev-qa-db-ja.com

許可されているものを除き、すべてのHTMLタグを削除します

特定のタグ(または多くの指定されたタグ)を削除するための多くの式、および 1つの特定のタグを除くすべてを削除するための1つ を見てきましたが、多くを除くすべてを削除する方法は見つかりませんでしたPHPで除外(つまり、p, b, i, u, a, ul, ol, liを除くすべて)。私は正規表現とは程遠いので、手を必要とします。 :)ありがとう!

31
Lazlo

strip_tags() はまさにこれを行います。

51
Rufinus

これを行うには、 strip_tags 関数

strip_tags —文字列からHTMLとPHPタグを取り除く

 strip_tags($contant,'tag you want to allow');

お気に入り

  strip_tags($contant,'<code><p>');
48
NullPoiиteя

柔軟性が必要な場合は、正規表現ベースのソリューションを使用して構築できます。 strip_tags上記で概説したように、依然として好ましいアプローチである必要があります。

以下は、指定したタグのみを削除します(ブラックリスト):

// tags separated by vertical bar
$strip_tags = "a|strong|em";

// target html
$html = '<em><b>ha<a href="" title="">d</a>f</em></b>';

// Regex is loose and works for closing/opening tags across multiple lines and
// is case-insensitive

$clean_html = preg_replace("#<\s*\/?(".$strip_tags.")\s*[^>]*?>#im", '', $html);

// prints "<b>hadf</b>";
echo $clean_html;
6
aleemb