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

2024-03-05

在我的 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;
}

和以下代码将其显示在默认.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()

Or just:

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

显示 SQL 结果时 nl2br() 不起作用 的相关文章

随机推荐