在我的 Joomla 模块中,我们使用以下代码从数据库中获取呼喊声
function getShouts($number, $timezone, $message) {
$shouts = array();
$db = JFactory::getDBO();
$query = $db->getQuery(true);
$query->select('*')
->from('#__shoutbox')
->order('id DESC');
$db->setQuery($query , 0 , $number);
$rows = $db->loadObjectList();
$i=0;
foreach ( $rows as $row ) {
$shouts[$i]->id = $row->id;
$shouts[$i]->name = $row->name;
$shouts[$i]->msg = $row->msg;
$i++;
}
return $shouts;
}
和下面的代码在default.php
中显示它print stripslashes($shouts[$i]->msg);
但是,当有人想要输入如下内容时,这会导致问题:
test line 1
test line 2
如果换行,提交后帖子显示如下:
test line 1rntest line 2
所以我做了一些研究并意识到我必须使用 nl2br()
,如下所示:
print stripslashes(nl2br($shouts[$i]->msg));
但是,它似乎并没有解决问题。我还尝试在帮助程序中创建另一个函数以使用 preg_replace
替换它,但这也没有帮助。
谁能解释为什么添加 nl2br()
后换行不起作用以及如何解决?
最佳答案
试试这个方法:
print nl2br(stripcslashes($shouts[$i]->msg));
关注stripcslashes()
功能,但不是 stripslashes()
或者只是:
print nl2br($shouts[$i]->msg);
更新: nl2br()
函数替换 \n
与 <br />
.问题是你没有 \n
在您的文本中,但有 n
或 \\n
.我觉得没必要用stripslashes()
当您从基地获取数据时,除非您在基地中获取数据。
关于php - 显示 SQL 结果时 nl2br() 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13410105/