1

AJAX/PHP を使用してコメント フォームを検証しようとしていますが、php の strip_tags 関数がすべての要素を削除していないように見えることを除いて、ほぼ完了しています。ここに私が持っているものがあります:

$msg = $_POST['message'];
$msg = strip_tags( $msg );

この関数は、終了タグを削除するだけのようです。たとえば<div>、メッセージ ボックスに入力されたものは削除されていませ</div> 。メッセージ内のすべての html 要素を文字通り削除したいと考えています。どうすればこれを達成できますか?

ありがとう、ダン。

編集:

私は完全なばかのように感じます!

show comment 関数とは別の検証関数があり、間違いに気づきました。表示しているメッセージに対して strip_tags を実行したことはありません!

とにかく、助けてくれてありがとう!

4

2 に答える 2

3

strip_tags()で失敗する可能性があることの 1 つは、 htmlentities().

たとえば、次のように<div>表示さ%3Cdiv%3Eれます。

これを試して。htmlentities はコードを変換します。%3CHTMLへ、例えば。<

$msg = strip_tags(htmlentities($msg));

これらを比較することで、デバッグしようとしているものを確認できるはずです。

echo $msg . '<br/>';
echo strip_tags($msg) . '<br/>';
echo htmlentities($msg) . '<br/>';
echo strip_tags(htmlentities($msg)) . '<br/>';
于 2012-07-04T00:44:05.813 に答える
0

strip_tags () は、タグを < と最初の空白または > の間の大文字と小文字を区別しない文字列として認識します。

したがってstrip_tags('< / div >')strip_tags('< div >')そこに空白がある場合、変更はありません。

クリーニングしようとしている文字列の例を投稿することをお勧めします。

$msg を直接エコーして、出力されたソースを表示することもお勧めします。データを POST しているため (クライアントからデータを送信する方法によって異なります)、期待するのではなく、実際に削除しようとしていることに気付く場合があります%3Cdiv%3E%3C%2Fdiv%3E(これは有効です) 。<div></div>

于 2012-07-04T00:29:36.237 に答える