我该如何清理包含无效字符的字符串,并在textarea中打印后会破坏html?
PHP的ord()
为所述字符返回0,但我怀疑它不是null,我认为无论如何都不重要。
当在textarea中显示字符串时,无效字符后的所有文本以及textarea之后的所有html元素都会消失。
我尝试使用htmlentities
,htmlspecialchars
,mb_convert_encoding
,iconv('UTF-8', 'UTF-8//IGNORE', $str)
,但他们都没有工作。
filter_var()
尚未在我们正在使用的5.1.2中引入。
echo和var_dump将字符打印为
答案 0 :(得分:2)
尝试filter_var($string, FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW)
。
编辑:由于5.1.2没有filter_var,您可以尝试这个(这几乎是一样的):
preg_replace('/\p{Cc}/u', '', $string);
答案 1 :(得分:1)
在htmlentities,htmlspecialchars,mb_convert_encoding,iconv('UTF-8','UTF-8 // IGNORE',$ str)不起作用之前,我使用过这个正则表达式。 它删除了控制字符
$str = preg_replace( '/[\x00-\x08\x0B-\x0C\x0E-\x1F\x7F-\x9F]/', '', $str );
答案 2 :(得分:0)
可能:
$str = trim($str, chr(0));
...