いくつかの新しい行を単に置き換えようとしています。 3つの異なる方法を試してみましたが、変更はありません。
$description = preg_replace('/\r?\n|\r/','<br/>', $description);
$description = str_replace(array("\r\n","\r","\n"),"<br/>", $description);
$description = nl2br($description);
これらはすべて機能するはずですが、私はまだ改行を取得します。それらは二重です: "\ r\r"。それでは、これらのいずれかが失敗することはありませんか?
nl2br()
関数は既にあります 置き換える inserts改行文字の前の<br>
タグ:
例( codepad ):
<?php
// Won't work
$desc = 'Line one\nline two';
// Should work
$desc2 = "Line one\nline two";
echo nl2br($desc);
echo '<br/>';
echo nl2br($desc2);
?>
それでも動作しない場合は、テキスト$desciption
が二重引用符で囲まれていることを確認してください。
これは、単一引用符が二重引用符付き文字列と比較して\n
などのエスケープシーケンスを「展開」しないためです。 PHPドキュメントからの引用:
注:二重引用符およびヒアドキュメントの構文とは異なり、特殊文字の変数およびエスケープシーケンスは、単一引用符で囲まれた文字列に出現しても展開されません。
これを使ってみてください
$description = preg_replace("/\r\n|\r|\n/",'<br/>',$description);
文字列(@Robikのように、単一引用符の文字列)に実際の文字「\」を含めることができます。
「\ r」または「\ n」文字列も同様に置き換える必要がある場合、ここでは特殊文字についてではなく、2つの文字「\」および「r」のシーケンスについて説明し、「\ '置換文字列で、動作します:
str_replace(array("\r\n","\r","\n","\\r","\\n","\\r\\n"),"<br/>",$description);
nl2br()
あなたが持っているようにうまく動作するはずです:
$description = nl2br($description);
サンプルコードの最初の行にある閉じられていない'
が問題の原因である可能性が高くなります。 $ descriptionの後の 'を削除...
...$description');
nl2br()は私のために働いたが、変数を二重引用符で囲む必要がありました:
これは動作します:
$description = nl2br("$description");
これは機能しません:
$description = nl2br($description);
これは確実に機能します:
str_replace("\\r","<br />",$description);
str_replace("\\n","<br />",$description);
これを試してください:
echo str_replace( array('\r\n','\n\r','\n','\r'), '<br>' , $description );
$description = nl2br(stripcslashes($description));
Str_replace(array( "\ r\n"、 "\ r"、 "\ n")、 ""、$ string);動作します。