PHPで長くて改行のある文字列を表示するには色々なテクニックが使えます。
そのテクニックについてまとめました。
長い文字列を表示するには
画面上に長い文字列を表示する方法は次の4つ
- echo で1行ずつ出力
- クォートで囲んで出力
- ヒアドキュメントで出力
- PHP閉じタグで出力
この4つについてコード例を踏まえて説明していきます。
echoで1行ずつ出力
一番最初はechoで1行ずつ文字列を出力する方法です。
例えば次のような感じで
1 2 3 |
echo "I have a pen.<br>"; echo "I have an apple.<br>"; echo "I have a pineapple.<br>"; |
このコードで注意しなくてはならないのは各行の最後に改行(brタグ)が入っていることです。
他の言語と同じ感覚で \n は使えません。
例えば上のコードのbrタグを全て \n に変えたとしましょう。
1 2 3 |
echo "I have a pen.\n"; echo "I have an apple.\n"; echo "I have a pineapple.\n"; |
こうすると次のように1行として画面上に表示されてしまいます。
1 |
I have a pen. I have an apple. I have a pineapple. |
このようにPHPでの改行コードはHTML上でも改行にはならないので要注意です。
HTMLとして改行するときは必ずbrタグを使う必要があります。
クォートで囲んで出力
PHPでは複数行文字列を一続きのクォートで囲むこともできます。
なので複数行文字列を次のように一気に表示することも可能
1 2 3 4 5 6 7 8 9 10 11 12 13 |
/** シングルクォーとの場合 */ echo ' I have a pen.<br> I have an apple.<br> I have a pineapple.<br> '; /** ダブルクォートの場合 */ echo " I have a pen.<br> I have an apple.<br> I have a pineapple.<br> "; |
シングルクォートまたはダブルクォートのどちらかで囲んでechoするだけです。
ただこの方法は最後がクォートで終わって見づらいのであまり使わない方がいいかもですね。
あまり使われることはなさそうです。
ヒアドキュメントで出力
PHPで複数行の出力と言えばヒアドキュメントです。
これを使った複数行の表示が次のコード
1 2 3 4 5 |
echo <<< EOM I have a pen.<br> I have an apple.<br> I have a pineapple.<br> EOM; |
<<< の後にEOMとかの目印を置いて、次にその目印が出てくるまで表示し続けます。
ちなみにヒアドキュメントでもHTMLとして出力するにはbrタグが必要です。
そしてヒアドキュメントのいいところは途中で変数が使えることなんですよね。
例えば次のように変数名を {} で囲めばその変数が展開されます。
1 2 3 4 5 6 |
$ihavea = 'I have a'; echo <<< EOM {$ihavea} pen.<br> {$ihavea}n apple.<br> {$ihavea} pineapple.<br> EOM; |
このコードでいえば {$ihavea} の部分です。
{$ihavea} が実際に表示されるときは "I have a" に置き換わります。
ちなみに次記事で書いたように、クラス変数とか関数・式なども展開可能
こういう風にヒアドキュメントは変数も使えて便利なのでよく使います。
場合によっては echo で1行ずつ表示より使いやすいかもしれません。
PHP閉じタグで出力
PHPというのはHTMLを出力するためのものです。
そのコードはPHPの開始タグ( <?php)とPHPの閉じタグ( ?> )の間にかかれています・
なのでそれ以外の場所に何か書くとHTMLとかテキストとして出力することも可能です。
例えば次がPHPから直に出力している例
1 2 3 4 5 |
?> I have a pen.<br> I have an apple.<br> I have a pineapple.<br> <?php |
?> から <?php までの部分がHTMLとして出力されます。
ちなみにこの場合も改行にはbrタグが必要です。
またヒアドキュメントと同じように変数も使えます。
例えば次がそのコード例
1 2 3 4 5 6 7 8 |
$pen = 'a pen'; $apple = 'an apple'; $pineapple = 'a pineapple'; ?> I have <?php echo $pen; ?>.<br> I have <?php echo $apple; ?>.<br> I have <?php echo $pineapple; ?>.<br> <?php |
途中で echo を使うことで変数の中身を展開できます。
この書き方はCSSとかスクリプトとかを一気に出力したいときに便利ですね。
それ以外だと普通に echo とかヒアドキュメントを使った方がいいかもしれません。
ここまでのまとめ
複数行文字列の表示方法をまとめると次の通り
- echoで1行ずつ出力
何を出力しているかが分かりやすくてGood
- クォートで囲んでまとめて出力
コードが見づらくなるのであまり使わない
- ヒアドキュメントで出力
まとめて出力できるうえに変数とかも使えて便利
- ?> と <?php の間で出力
CSSとかスクリプトをまとめて出力するのに便利
場面ごとに方法を切り替えていくと効率よくコードが書けると思います。
僕の場合はヒアドキュメントとPHP閉じタグを使うことが多いですね。
という訳で複数行文字列を表示するテクニックまとめでした。
ちなみにここでは複数行表示でしたが複数行の代入も可能です。
詳しくは次の記事でテクニックをまとめたのでそちらをどうぞ
ではでは($・・)/~~~