【问题标题】:nl2br() not working when displaying SQL results显示 SQL 结果时 nl2br() 不起作用
【发布时间】:2012-11-04 19:05:43
【问题描述】:

在我的 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() 后换行不起作用以及如何解决?

【问题讨论】:

    标签: php joomla joomla2.5 nl2br


    【解决方案1】:

    试试这个方法:

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

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

    或者只是:

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

    UPD: nl2br() 函数将 \n 替换为 <br />。问题是您的文本中没有\n,但有n\\n。我认为当你从基地获取数据时不需要使用stripslashes(),除非你在你的基地有电子数据的情况。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-19
      • 1970-01-01
      • 2012-09-28
      相关资源
      最近更新 更多