0

基本的にサンプル コードとコメントを共有するための Web サイトを構築しようとしています。私の問題は、img と i b のようないくつかの非常に一般的なものを除くタグ/スクリプトを回避することです...さまざまな解決策を試しましたが、ある時点でそれらすべてがスタックします:

最初に タグを分割してコードを開始し、他の場所に split_tag し、コード部分に htmlspecialchars を追加してから、それらを再マージしました。ただし、ユーザーがテキスト部分のどこでも < を使用すると、> が表示されるまで投稿が消去されます。(また、< の後に空白を入れることで、strip_tags が消去されるのを回避しようとしましたが、それがタグであるか未満であるかを認識する方法を見つけることができませんでした)

次に、逆さまにしてみました。すべての投稿に htmlspecialchars を使用し、特定のものをタグの外観に戻します。今回は、一部の置換機能が正しく機能しないか、互いに重複しているため、すべての置換機能で問題が発生しました。簡単な解決策があるような気がしますが、正しい角度で見ることができませんでした。助言がありますか ?

$yazi = htmlspecialchars($_POST["yazi"]);
$yazi = str_replace('&lt;a href=&quot;', '<a href"', $yazi);
$yazi = str_replace('&lt;&#47a&gt;', '</a>', $yazi);
$yazi = str_replace('&lt;code&gt;','<code>', $yazi);
$yazi = str_replace('&lt;&#47codea&gt;', '</code>', $yazi);
$yazi = str_replace('&lt;br&gt;', '<br>', $yazi);
$yazi = str_replace('&lt;i&gt;', '<i>', $yazi);
$yazi = str_replace('&lt;&#47i&gt;', '</i>', $yazi);
$yazi = str_replace('&lt;b&gt;','<b>',$yazi);
$yazi = str_replace('&lt;&#47b&gt;','</b>',$yazi);
$yazi = str_replace('&lt;p&gt;','<p>',$yazi);
$yazi = str_replace('&lt;&#47p&gt;','</p>',$yazi);
$yazi = str_replace('&lt;img src=&quot;', '<img src="', $yazi);
$yazi = str_replace('&quot;/&gt;', '"/>', $yazi);
$yazi = str_replace('&quot; /&gt;', '" />', $yazi);
$yazi = str_replace('&quot;&gt;', '">', $yazi);
$yazi = str_replace('&quot; &gt;', '" >', $yazi);

4

1 に答える 1

0

HTMLサニタイザーが必要なようです。

http://htmlpurifier.org/はかなり良さそうです。

于 2011-04-16T22:32:17.323 に答える