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の方が見やすいのでこっちを使うことが多いですが、できることは同じなのでどちらを使っても差はありません。自分の好きな方を使いましょう。




