php - 显示 SQL 结果时 nl2br() 不起作用

标签 php joomla joomla2.5 nl2br

在我的 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/

相关文章:

php - 我应该合并我的创建和更新 Controller 吗?

php - 在面向对象的 PHP 设计中,HTML 应该在哪里呈现?

mysql - Joomla 导致 "Too many connections"数据库错误”

php - 如何在 JA Mero joomla 模板中编辑文章布局

php - 从 Blob 插入和检索图像

php - 如何使用 PCNTL 并行调用 php 函数

css - Joomla css 文件自行重写

.htaccess - 需要在 joomla 1.5 中将 URL 更改为友好的 url

apache - 重定向到Apache虚拟主机文件中的子文件夹

caching - 引用不存在的文件路径和文件的 PHP fatal error