我正在寻找一个textarea的白名单,该书名将用于书名。我想要允许的唯一字符是字母数字,空格,连字符,下划线,句点和<br>
标记。理想情况下,任何其他特殊字符都应该转换为它们的特性。如果有帮助,该页面使用php,html,javascript和jquery。有人有主意吗??在textarea的html textarea白名单
例输入:
<textarea>
I have this book called Sample- a Fake Book.
</textarea>
我正在寻找一个textarea的白名单,该书名将用于书名。我想要允许的唯一字符是字母数字,空格,连字符,下划线,句点和<br>
标记。理想情况下,任何其他特殊字符都应该转换为它们的特性。如果有帮助,该页面使用php,html,javascript和jquery。有人有主意吗??在textarea的html textarea白名单
例输入:
<textarea>
I have this book called Sample- a Fake Book.
</textarea>
如果这与安全性有任何关系,即确保数据总是安全显示,那么这必须在服务器端完成。
除了<br>
标签,只要HTML编码应该做你想要的。
也许最好的办法是使用htmlentities,然后把<br>
的背:
$encoded_text = htmlentities($input_text);
// replace the encoded <br>'s with the original <br>'s
$final_text = str_replace(htmlentities("<br>"), "<br>", $encoded_text);
的另一种方式,试图让这种行为并仍使用htmlentities
是一个占位符代替<br>
标签,运行通过htmlentities
,然后将其替换回来。沿线的东西:
$br_placeholder = "XX_BR_PLACEHOLDER_XX";
$text_with_placeholders = str_replace("<br>", $br_placeholder, $input_text);
$text_with_htmlentities = htmlentities($text_with_placeholders);
$final_text = str_replace($br_placeholder, "<br>", $text_with_htmlentities);
谢谢!第一种将
标签带回来的方法效果很好! –
cbr0wn
如果你希望允许非字母数字字符,但让他们转换成ヶ辆,那么白名单是不是你所需要的。您可以:
$('<div/>').text(string).html()
把戏做同样的事情在textarea上使用onkeyup处理程序来检测什么时候输入了内容。然后,您检索textarea的内容和检查“非法”字符:
<script type="text/javascript">
function textFilter() {
this.value = this.value.replace(/[^a-zA-Z0-9 \-_\.]/, '');
}
</script>
<textarea onkeyup="textFilter();"></textarea>
不知道你是什么意思“标签”,所以这个功能将无法处理的“标签”。请注意,这只是删除非法字符,并不会将它们转换为字符实体。
这将删除字符。它们应该被转换为html实体 –
它也不会阻止人们通过自定义帖子提交恶意内容。 – jduncanator
你到目前为止尝试过什么?你跑哪个具体问题?什么是“标签”字符? – hakre
我用@orip第一种方法使用htmlentities然后把
的带回来。为我工作得很好! – cbr0wn