我有一个不允许的字符数组:
$array = ('<php', '<?', '?>', '<h', '<b>');
我有一个字符串消息。我该如何检查,该字符串在数组中不包含任何这些单词?
基本上,我有一个 ajax 聊天,当我输入时<b>hello</b>
,它会使文本变粗,我不想在那里允许 HTML,我不知道怎么做?
我有一个不允许的字符数组:
$array = ('<php', '<?', '?>', '<h', '<b>');
我有一个字符串消息。我该如何检查,该字符串在数组中不包含任何这些单词?
基本上,我有一个 ajax 聊天,当我输入时<b>hello</b>
,它会使文本变粗,我不想在那里允许 HTML,我不知道怎么做?
您可以使用 去除所有 html 标签strip_tags
,但是当您输出到 html 时,您应该始终使用htmlspecialchars()
,以便对任何特殊字符(如>
、<
等)进行编码,这样它们就不会对生成的 html 产生任何影响。
顺便说一句,黑名单方法很可能会失败,如果人们开始添加<script>
标签等怎么办?虽然在为输出到的媒体(html、db 等)正确编码时似乎没有必要,但通常最好使用白名单方法。
xml 对您在网页上显示的任何内容进行编码...
你真的不需要把这些去掉。如果您使用htmlspecialchars
,那么您可以编码<
as<
和>
as >
,因此 html 会直接传递,但不会被浏览器呈现。
另外:如果您使用 jQuery,请记住这.text(...)
将为您转义这些东西。.html(...)
将不会。安全地将 html 输出到浏览器时,请使用.text(...)
.
为避免使用 HTML 标签,您可以使用
$value = htmlentities($value);
或者
$value = htmlspecialchars($value);
你也可以使用这两个功能
$value = htmlspecialchars(htmlentities($value));