フォームを作成し、PHP を使用してすべての HTML タグを削除したいのですが、データベースに挿入される前にメンバーが [送信] をクリックしたときに、一部のタグ (および書式段落の一部のタグ) を除外します。(<b>, <strong>, <em>, <i>, <p>, <br>, <ul>, <li> <ol>
$content = $_POST['content'];
助けてくれてありがとう。
私の英語がうまくない場合は申し訳ありません。
次のようにする必要があります。
// tags separated by vertical bar
$strip_tags = "a|strong|em";
// target html
$html = '<em><a><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
// note: The *? makes the matching non-greedy
$clean_html = preg_replace("#<\s*\/?(".$strip_tags.")\s*[^>]*?>#im", '', $html);
// prints "<b>hadf</b>";
echo $html;
strip_tags()
HTML属性を見ていないため、使用すると危険な場合があります。そのため、悪意のあるユーザーがこれをクロス サイト スクリプティング (XSS) やその他の攻撃に使用する可能性があります (David Chen への私のコメントにも記載されています)。
代わりに、たとえばhttp://htmlpurifier.org/などの既存の HTML フィルターを使用することをお勧めします。これは、おそらくはるかに安全で、このタスクに適しています。