1. ホーム
  2. php

[解決済み] How can I replace newline or \r\n with <br/>?

2023-06-26 13:55:12

Question

I am trying to simply replace some new lines and have tried three different ways, but I don't get any change:

$description = preg_replace('/\r?\n|\r/', '<br/>', $description);
$description = str_replace(array("\r\n", "\r", "\n"), "<br/>", $description);
$description = nl2br($description);

These should all work, but I still get the newlines. They are double: "\r\r". That shouldn't make any of these fail, right?

How to solved?

There is already the nl2br() function that inserts <br> tags before new line characters:

Example ( 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ドキュメントからの引用です。

注意 : 二重引用符やheredoc構文とは異なり、変数や特殊文字のエスケープシーケンスは一重引用符で囲まれた文字列の中で発生した場合、展開されることはありません。