PHPで\nを使っても改行されない時の原因と対処法

PHPで\nを使っても改行されない時の原因と対処法 PHP

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