nl2br从我的数据库中获取数据后,我无法使用函数:
$result = mysql_query("SELECT comments..etc.etc..");
while ($row = mysql_fetch_array($result))
{
echo nl2br($row["comments"]);
}
Run Code Online (Sandbox Code Playgroud)
在数据库行中comments:
\r\nThanks,\r\n
Run Code Online (Sandbox Code Playgroud)
OUTPUT:
与DB相同:
\r\nThanks,\r\n
Run Code Online (Sandbox Code Playgroud)
如果我只是这样测试它,它工作正常:
<?php
$mystring = "\r\nThanks,\r\n";
echo nl2br($mystring);
?>
Run Code Online (Sandbox Code Playgroud)
OUTPUT:
converts \r \n to <br />
Run Code Online (Sandbox Code Playgroud)
bco*_*sca 27
试试这个:
echo preg_replace('/\v+|\\\r\\\n/Ui','<br/>',$row["comments"]);
Run Code Online (Sandbox Code Playgroud)
Dan*_*aws 11
我知道这是一个很老的帖子,但如果像我一样,你偶然发现了这个问题并且以上内容对你不起作用,这个解决方案可能会帮助你:
echo nl2br(stripslashes($row["comments"]));
Run Code Online (Sandbox Code Playgroud)
或者(它们的功能不同,请注意剥离后的附加"c")
echo nl2br(stripcslashes($row["comments"]));
Run Code Online (Sandbox Code Playgroud)
看到帮助我的原始线程:nl2br()在显示SQL结果时不起作用
在将数据添加到数据库时,很可能您正在进行两次转义.
检查将数据添加到数据库的代码,并删除不必要的转义.
最有可能的是,这是一种毫无意义的"普遍消毒"功能.
嗯,这很容易.
让我们来一个引用,而不是一个新线来展示.行为一样.被剥离的斜线然后数据进入数据库.
因此,在正常情况下:
source:It's
转义后:It\'s
通过查询执行斜杠被剥离,并
在数据库和后面都被删除It's
在双逃逸案件中:
source:It's
在转义之后:It\'s
在第二次转义之后:It\\\'s
通过查询执行斜杠被剥离并且
在数据库和后面It\'s
都被我们的数据破坏了.
只是让自己明白逃避我不是一些神奇的东西,使你的数据"安全"(因此可以做多次,你可能认为).它只是为某些符号添加反斜杠.
以下解决方案适用于 Windows 以及 linux/unix 机器
str_replace(array("\\r\\n", "\\r", "\\n"), "<br />", "string");
| 归档时间: |
|
| 查看次数: |
20235 次 |
| 最近记录: |