PHPで改行するには\n
を使いますが、ブラウザで表示されると改行されない現象で詰まってました。
// 改行されない...
echo "こんにちは\nいい天気ですね";
// 結果→こんにちは いい天気ですね
というわけで、「\n」で改行されない原因と対処法を解説します。
PHPで\nを使っても改行されない原因
原因は\n
はブラウザ用の改行コードではないからです。
ブラウザ用の改行コードは<br>
です。\n
を使ってもブラウザ表示では改行できません。\n
はブラウザ以外(メール文など)で改行する際のコードです。
つまり\n
ではなく<br>
を使えばいいだけです。
<br>
を使って改行する際にはシングルクオート(''
)でもダブルクオート(""
)でもどちらでも構いません。
// 改行できない
echo "こんにちは\nいい天気ですね";
// 結果→こんにちは いい天気ですね
// 改行できる
echo 'こんにちは<br>いい天気ですね';
// 結果→こんにちは
// いい天気ですね
// 改行できる
echo "こんにちは<br>いい天気ですね";
// 結果→こんにちは
// いい天気ですね
\nを使って改行する方法
とはいえ、\n
を使ってブラウザで改行する方法もあります。
\n
を<br>
に変換するnl2br()
という関数がPHPには用意されています。\n
を使って改行したい文字列にこの関数の処理を通せばいいのです。
注意点としては、シングルクオートではなくダブルクオートを使ってください。PHPではシングルクオートは完全に文字列とみなすので、\n
も文字列として認識されてしまいます。
エスケープなどを反映させたい場合はダブルクオートで囲みましょう。
//改行できない
$txt = 'こんにちは\nいい天気ですね';
echo nl2br($txt);
// 結果→こんにちは\nいい天気ですね
// 改行できる
$txt = "こんにちは\nいい天気ですね";
echo nl2br($txt);
// 結果→こんにちは
// いい天気ですね
nl2br()
を使えばブラウザでも\n
で改行できるようになります。
※ブラウザ以外なら\n
で普通に改行できるのでnl2br()
は必要ありません。
まとめ
\n
を使っても改行されないのはブラウザ用の改行コードではないのが原因でした。
改行するためには
<br>
を使う(シングルクオート・ダブルクオートどちらでもok)\n
+nl2br()
を使う(ダブルクオートのみ)
という2つの方法があります。
個人的には\n
の方が見やすいのでこっちを使うことが多いですが、できることは同じなのでどちらを使っても差はありません。自分の好きな方を使いましょう。