是否有人知道如何防止FILTER_SANITIZE_SPECIAL_CHARS将( \n )行转换为(
;)。
我正在为我的网站开发一个简单的评论系统,我发现php过滤器将\n转换为所以当使用nl2br()时没有换行。
请帮帮忙。
谢谢:)
发布于 2010-06-30 15:33:02
带有FILTER_SANITIZE_SPECIAL_CHARS
选项的FILTER_SANITIZE_SPECIAL_CHARS
正在执行它应该做的事情:
<>&和ASCII值小于32的字符,可选择剥离或编码其他特殊字符。
换行符(\n
)的ASCII值小于32,因此将转换为
。因此,您可以使用解码将它们转换回原来的字符:
$string = "line 1\nline 2";
$filtered = filter_var($string, FILTER_SANITIZE_SPECIAL_CHARS);
echo "$filtered\n";
echo(html_entity_decode($filtered));
产出:
line 1 line 2
line 1
line 2
但是,我想这一步首先击败了使用FILTER_SANITIZE_SPECIAL_CHARS
的目标。
如果导致问题的仅仅是换行符,那么在使用
之前,可以用换行符替换HTML字符实体( nl2br()
)。
echo str_replace(' ', "\n", $filtered);
产出:
line 1
line 2
或者更好的方法是跳过中间一步,用<br />
替换HTML字符实体(<br />
)。
echo str_replace(' ', '<br />', $filtered);
产出:
line 1<br />line 2
...but,我不能百分之百肯定你想做什么。
https://stackoverflow.com/questions/3150413
复制相似问题