1

我正在尝试使用 AJAX/PHP 验证评论表单,现在几乎完成了,除了 php 中的 strip_tags 函数似乎没有删除所有元素。这是我所拥有的:

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

此功能似乎只是删除结束标签。例如<div>,输入到消息框中的内容没有被删除,</div> 正在被删除的地方。我想从字面上删除消息中的每个 html 元素。我如何实现这一目标?

谢谢,丹。

编辑:

我觉得自己像个彻头彻尾的白痴!

我有一个与我的显示评论功能分开的验证功能,并且刚刚意识到我的错误。我从来没有在我显示的消息上运行 strip_tags!

无论如何,感谢您的帮助!

4

2 回答 2

3

strip_tags()可能失败的一件事是htmlentities()

它会<div>显示%3Cdiv%3E为例如。

试试这个。htmlentities 将转换代码,例如。%3C到 HTML,例如。<

$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 并查看发出的源。由于您正在发布数据(取决于您如何从客户端发送数据),您可能会发现您实际上是在尝试剥离%3Cdiv%3E%3C%2Fdiv%3E(这是有效的)而不是<div></div>您期望的。

于 2012-07-04T00:29:36.237 回答