PHPの改行コードとbrタグというのは実は全くの別物です。
僕自身もそうでしたが、それを知らないと思ったように改行ができなくて困ります。
という訳で改行コードとbrタグの出力のやり方とその違いを説明していきます。
改行コード、brタグのそれぞれの出力方法
まず最初は改行コードとbrタグを画面に出力する方法を簡単に紹介します。
それぞれの出力方法は次の通り
改行コードの出力
改行コードっていうのはおなじみの \r とか \n とかのことです。
ちなみに \r はキャリッジリターン(CR)、 \n がラインフィード (LF)と呼びます。
OSによってこの改行コードは異なり、代表的なOSでは改行コードは次の通り
- Windows系 : CRLF ( \r\n )
- Mac OS(9以前) : CR ( \r )
- Unix系 : LF ( \n )
そしてPHPでは改行コードは次のように文字列中で \n または \r で表示可能です。
1 |
echo "Apple\nBanana\nCherry"; |
上のコードを実行すると改行が入った文字列が表示されます。
1 2 3 |
Apple Banana Cherry |
ただし改行コードが使えるのはダブルクォート(")内だけです。
次のようにシングルクォートで囲った文字列内では改行コードは使えません。
1 |
echo 'Apple\nBanana\nCherry'; |
上のコードを実行すると \n がそのまま文字列で表示されてしまいます。
1 |
Apple\nBanana\nCherry |
なので改行コードはダブルクォート内だけでしか使えないことに要注意
brタグを出力する方法
次はbrタグで出力する方法です。
brタグというのはHTMLでよく使われる文章内で改行するためのタグのこと
PHPでbrタグを使うには単純に echo で出力する文字列内にbrタグを含めるだけ
1 2 3 |
echo '<p>吾輩は猫である。名前はまだ無い。'; echo '<br>'; echo 'どこで生れたかとんと見当がつかぬ。</p>'; |
こういう風に書けばブラウザ上で次のように改行して表示されます。
1 2 |
吾輩は猫である。名前はまだ無い。 どこで生れたかとんと見当がつかぬ。 |
この次で説明する違いにも関係しますが、これはブラウザ上で改行するためのものです。
テキストとして改行しているわけではありません。
改行コードとbrタグの違い
では改行コードとbrタグの違いはいったい何なのか・・・?
結論から言ってしまうと改行コードとbrタグの違いとは次のようなことです。
- 改行コード
テキスト内で改行するときに使う
- brタグ
HTML内で改行するときに使う
これがどういうことかについて次でさらに詳しく説明します。
まず \r とか \n などの改行コードはテキスト内で改行するためにしか使えません。
なので次のようにHTMLの出力時に改行のつもりで使ってはいけないということです。
1 2 3 |
echo '<p>吾輩は猫である。名前はまだ無い。'; echo "\n"; echo 'どこで生れたかとんと見当がつかぬ。</p>'; |
こうするとテキストとしては改行されますが、HTMLとしては改行されません。
つまりブラウザ上では次のように改行なしで表示されるということです。
1 |
吾輩は猫である。名前はまだ無い。 どこで生れたかとんと見当がつかぬ。 |
こうなるのはHTMLでは連続する空白文字は全てスペース1つに置き換えられるからです。
なのでHTMLとして改行したいなら必ずbrタグを使いましょう。
逆にテキストとして改行したい場合はbrタグは使ってはいけません。
ただ単にHTMLソースの見た目を整えるだけなら改行コードを使う必要があります。
例えば次がscriptタグ内でソースコードの見た目を整えているコード例
1 2 3 |
echo "<script>\n"; echo "alert('おはこんばんちは');\n"; echo "</script>"; |
このようにして出力したHTMLソースをテキストとして見てみると次のように表示されます。
1 2 3 |
<script> alert('おはこんばんちは'); </script> |
改行コードはソースコードの見た目を整えるため、
brタグは実際にブラウザに出力するときに改行するため
こういう風にして使い分けていく必要があります。
ここまでのまとめ
簡単にここまでのことをまとめます。
まず改行コードとbrタグを出力する方法をまとめると次の通り
- 改行コード
文字列内で \r や \n を使う
ただしダブルクォート(")内だけでしか使えない - brタグ
出力したい文字列に <br> を含める
そしてこの2つは全く別物でそれぞれ次の目的で使い分けるべき
- 改行コード
テキストとして改行したい場合に使用
例えばHTMLソースの見た目を整えたいときなど - brタグ
HTMLとして改行したい場合に使用
例えば実際にブラウザ上で改行させたいときなど
PHPでは改行コードとbrタグは全く別物なので注意して使っていきたいですね。
という訳でこの2つの出力方法と違いについてまとめてみました。
ではでは・△・)ノ バイバイ