3

フォームの送信時に、データベースに保存されている製品の説明の値をadminからtextareaを介して取得しています。データベースから説明を選択すると、次の$description = $row['description'];ようにメインページに$ descriptionをエコーし​​たいのですが、新しい行を作成する代わりに文字echo nl2br($description);が表示されます。"\r\n"私がこことネット上で見つけたものから、あなたの文字列は次のように二重引用符の間に使用する必要があります:

echo nl2br("Hello, \r\n This is the description");

さて、$descriptionfrom databaseの値は実際にはあります"Hello, \r\n This is the description"が、私のスクリプトでは次のように使用する必要があります。

echo nl2br($description);

これはbrを作成せず、\r\n代わりに出力します。だから、私は何ができますか、私の経験から、ここでは二重引用符を使用することはできません。

4

4 に答える 4

6

次のように、文字列を通過させる前に、それらをそれぞれのエスケープシーケンスに変換できます。nl2br()

$description = nl2br(str_replace('\\r\\n', "\r\n", $description));

しかし、そもそもデータベースで文字通りのエスケープは何をしているのでしょうか?

于 2011-03-07T23:35:20.250 に答える
1

のリテラル値は\r\n、それらが表す実際の文字ではなく、データベースに格納しています。

データベースでこれを確認してください。説明フィールドに表示\r\nされている場合は、データを保存するときにバックスラッシュをエスケープしている可能性があります。

于 2011-03-07T23:34:58.217 に答える
0

\テキストには個々の文字、、、、およびが含まれているように見えますが、r実際の改行文字は含まれていません。そのため、仕事を終わらせる必要があります:\nstr_replace()

echo str_replace('\r\n', '<br>', $description);
于 2011-03-07T23:35:13.113 に答える
-2

nl2brは、「is_xhtml」の2番目の(オプションの)引数を取ることができます。これにより、がに変換\r\n<br>れます。行を次のように変更するだけです。

echo nl2br($description, TRUE);
于 2011-03-07T23:36:43.563 に答える