nl2br()显示SQL结果时不工作(nl2br() not working when displa

2019-10-17 09:37发布

在我的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()以及如何解决它?

Answer 1:

试试这个方法:

print nl2br(stripcslashes($shouts[$i]->msg));

注意stripcslashes()函数,而不是stripslashes()

要不就:

print nl2br($shouts[$i]->msg);

UPD: nl2br()函数替换\n<br /> 。 问题是,你不必\n在你的文字,但有n\\n 。 我认为没有必要使用stripslashes() ,当你从基地获得数据,除了这种情况,当你已经在你的基地ecranized数据。



文章来源: nl2br() not working when displaying SQL results