检查消息是否包含不良字符


Check if message contains bad characters?

我有一个不允许的字符数组:

$array = ('<php', '<?', '?>', '<h', '<b>');

我有一个字符串消息。我如何检查,字符串中不包含数组中的这些单词?

基本上,我有一个ajax聊天,当我输入<b>hello</b>,它使文本粗体,我不想让HTML在那里,我不知道怎么做?

您可以使用strip_tags剥离所有html标签,但是当您输出到html时,您应该始终使用htmlspecialchars(),以便任何特殊字符,如>, <等进行编码,因此它们不会对生成的html产生任何影响。

顺便说一下,黑名单方法很可能失败,如果人们开始添加<script>标签等怎么办?虽然当您为要输出的媒体(html、db等)正确编码时,这里似乎没有必要这样做,但通常最好使用白名单方法。

xml对您在网页上显示的任何内容进行编码

你真的不需要去掉这些。如果你使用htmlspecialchars,那么你可以将<编码为&lt;,将>编码为&gt;,这样html就可以直接传递,而不是由浏览器呈现。

作为补充:如果您使用jQuery,请记住.text(...)将为您转义这些内容。.html(...)不会。当将html安全地输出到浏览器时,请使用.text(...)

要避免使用HTML标签,可以使用

$value = htmlentities($value); 

$value = htmlspecialchars($value);

也可以使用

这两个函数
$value = htmlspecialchars(htmlentities($value));