PHPで文字列をHTMLに出力するいくつかの方法

  • このエントリーをはてなブックマークに追加
  • Pocket

スポンサードリンク

echo

PHPプログラムでHTMLに文字列を出力する際、echoやprintなどを使います。

わたくしはなんとなくechoを使っていましたが、print派の人もいて、違いは何でしょうか。

それ以外にも、文字列などを括る引用符でシングルクオートやダブルクオートなど、使う人によってバラバラだと思います。

これからご紹介するさまざまな出力方法で、適切な文字列の出力が実現できるでしょう。

 

echoとprint

echoprintはとくに大きな違いはなく、好みで良いと思いますが、いくつかの違いがあります。

echoprintの書き方は以下のとおりです。

echoの記述例

echo,(カンマ)で複数の値を出力できるのが特徴です。
printではエラーになります。

printの記述例

printは戻り値があり、1を返します。

echoには戻り値はないため、その分若干処理が速いと言われていますが、誤差の範囲でほぼ変わらないと思います。

echoの短縮構文

echoはPHP5.4からは短縮構文という方法で出力することも出来ます。

以下のように表示されます。

テストです。

短縮構文はphpechoといった記述を省くことができ、ソースもスッキリですね。

PHP5.4以前ではphp.iniの設定で、short_open_tagonにしないと短縮構文は使えません。

PHP5.4以降では短縮構文は設定しなくても常に有効となります。

echoで文字列を複数行にわたって表示

echoは文字列を一行だけでなく、複数行にわたって表示させることもできます。

以下のように表示されます。

こんにちは!
今日は暑いですね。
それではさようなら。

ヒアドキュメントのように改行しながら表示できるので、見やすくなりますね。

ヒアドキュメント

PHPには上記以外にヒアドキュメントと呼ばれる出力方法があります。

echoなどで長文を出力する際、引用符や改行文字を気にする必要があり、煩雑となります。

ヒアドキュメントは特定のID内であれば、HTMLのように文字を入力するだけで、引用符やエスケープシーケンス等が必要ないため、簡単に出力できます。

以下のように表示されます。

テストです。
今日は天気に恵まれましたね。
こんにちは 田中 さん。

詳しくは下記リンクを参照ください。

参考:PHPのヒアドキュメントでの簡単出力と、よくあるエラー

ただ、「echoとprint」の項のサンプルと同様にHTMLタグの中にPHPを記述する方法であれば、ヒアドキュメントを使う必要はないでしょう。

私も使ったことがほとんどありません。

引用符による処理の違い

文字列などを括る際に使う' '(シングルクオート)や" "(ダブルクオート)を引用符といいます。

どちらを使うかは人それぞれだと思いますが、以下のような違いがあります。

変数を含む文字列の処理

「echoとprint」の項のサンプルと同じ表示となりますが、記述方法が違います。

※変数の前後は半角スペースを入れないと、変数より前しか表示されない。

 

HTMLの<p>の中にPHPコードを書くか、PHPタグの中で<p>タグから書くかの違いがありますが、人それぞれ好みの違いだと思います。

ただ、2番めのコードをよく見てみると、" "(ダブルクオート)で括られています。

これは' '(シングルクオート)で括ると、変数がそのまま表示されるためです。

以下のように変数の$nameがそのまま文字列として出力されてしまいます。

変数が含まれる文字列を上記のように出力する場合は、" "(ダブルクオート)でくくる必要があります。

 

ただ、前項「echoとprint」のように文字列と変数を一括りにしないように記述すれば、そもそもこの問題は起きないため、前項の書き方をお勧めします。

引用符の重複

以下のように同じ引用符が入れ子になるとエラーとなります。

上記の場合、echoの後とa要素内の" "(ダブルクオート)が重複し、入れ子になっているため、2個目の引用符でエラーとなります。

この場合以下の2つの回避策があります。

エスケープシーケンス

a要素内の引用符の前に\(バックスラッシュ)を付けることで、エスケープシーケンスにより引用符は重複せずそのまま出力してくれます。

echo “<a href = \“test.html\“>こちら</a>”;

違う引用符で括る

PHPとHTMLをそれぞれ別の引用符で括るようにすることで、エラーは起きません。

echo <a href = test.html>こちら</a>;

わたくしの場合、エスケープシーケンスのためにわざわざ文字を付け加えるのが手間なので、違う引用符で括るようにしています。

通常の引用符は' '(シングルクオート)で、HTMLは" "(ダブルクオート)で統一しています。

英文を括る場合

以下のようなシングルクォート混じりの英文はダブルクォートの方が効率的だと思います。

“Let’s Get’s Wet’s!!”

シングルクォートの方がダブルクォートより処理が速いと言われていますが、これも誤差の範囲でほぼ変わらないと思います。

わたくしは基本シングルクォートを用いていますが、コーディング規約や統一感を優先させていいレベルですね。

結論

わたくしとしては、「echoとprint」の項のHTMLタグ内にPHPを記述する書き方の方が、エスケープや引用符の問題等も起きないためお勧めです。

ただ、それぞれメリットやデメリットはあるかと思いますので、それぞれのやり方でよろしいかとは思います。

文字列の出力について、さまざまな使い方を見ていただき、適切な記述方法で効率アップに繋げましょう。

スポンサードリンク

  • このエントリーをはてなブックマークに追加
  • Pocket

コメント

  1. sato より:

    // ヒアドキュメント始まり
    echo >>> EOM

    正しくは
    echo <<< EOM

    かと思うのですが。

    1. flatFlag より:

      確かにそのとおりですね、記述を間違えており申し訳ありません。
      修正させていただきました。
      ご指摘いただきありがとうございます。
      今後とも「flatFlag」をよろしくお願いいたします。

コメントを残す

*