gpt4 book ai didi

php - FILTER_SANITIZE_SPECIAL_CHARS 换行问题

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:58:36 33 4
gpt4 key购买 nike

有谁知道如何防止 FILTER_SANITIZE_SPECIAL_CHARS 将换行符 (\n) 转换为 ( )。

我正在为我的网站开发一个简单的评论系统,我发现 php 过滤器将\n 转换为 所以当使用 nl2br() 时没有换行符。

请帮忙。

谢谢:)

最佳答案

filter_var FILTER_SANITIZE_SPECIAL_CHARS 选项正在做它应该做的事情:

HTML-escape '"<>& and characters with ASCII value less than 32, optionally strip or encode other special characters.

换行符 ( \n ) 的 ASCII 值小于 32,因此将被转换为 &#10; .因此,您可以使用 html_entity_decode将它们转换回原来的字符:

$string = "line 1\nline 2";
$filtered = filter_var($string, FILTER_SANITIZE_SPECIAL_CHARS);
echo "$filtered\n";
echo(html_entity_decode($filtered));

输出:

line 1&#10;line 2
line 1
line 2

但我想这违背了使用 FILTER_SANITIZE_SPECIAL_CHARS 的目的。首先。

如果只是换行导致问题,您可以在使用 &#10; 之前用换行符替换 HTML 字符实体 ( nl2br() ) :

echo str_replace('&#10;', "\n", $filtered);

输出:

line 1
line 2

或者更好的是,跳过中间步骤,将 HTML 字符实体 ( &#10; ) 替换为 <br /> :

echo str_replace('&#10;', '<br />', $filtered);

输出:

line 1<br />line 2

...但我不是 100% 确定您要做什么。

关于php - FILTER_SANITIZE_SPECIAL_CHARS 换行问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3150413/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com