2

私の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()とその修正方法を誰かが説明できますか?

4

1 に答える 1

7

この方法を試してください:

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

機能に注意を払うが、注意しstripcslashes()ないstripslashes()

あるいは単に:

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

UPD: nl2br() function は に置き換え\nられ<br />ます。\n問題は、テキストにはありませんが、 norがあること\\nです。stripslashes()自分の拠点でデータをエクレイン化している場合を除いて、拠点からデータを取得する場合は使用する必要はないと思います。

于 2012-11-16T04:03:51.720 に答える