PHPのクォーテーションとヒアドキュメント

(1/1)
シングルクォーテーション、ダブルクォーテーション
PHPで文字列の表すには、シングルクォーテーション '...' とダブルクォーテーション "..." の2種類がある。実際にプログラムを作り、それぞれの働きの違いを見ていく。また、ヒアドキュメントについて紹介する。

目次

サンプル・プログラム

圧縮ファイルの内容
quotation.phpサンプル・プログラム本体。
quotation.php 更新履歴
バージョン 更新日 内容
1.0.0 2024/10/05 初版

解説:文字列(テキスト)

quotation.php

  16: $single1 = 'ようこそ!';
  17: $double1 = "ようこそ!";

まず、変数 $single1 にはシングルクォーテーション '...' で囲んだ文字列(テキスト)を、変数 $double1 にはダブルクォーテーション "..." で囲んだ文字列(テキスト)を代入し、HTMLテキスト中で表示してみる。
1.ようこそ!
2.ようこそ!
まったく同じ文字列が表示されるだろう。
このように、単純なテキストを扱う場合は、シングルクォーテーション '...' もダブルクォーテーション "..." も同じ働きをする。

ちなみに、日本語で文章を書くときには引用符の左右は異なる記号にするが ‘...’,“...”、プログラミングの場合は左右とも同じ半角記号である。

解説:変数展開

quotation.php

  19: $single2 = '{$single1} ぱふぅ家のホームページへ!!';
  20: $double2 = "{$single1} ぱふぅ家のホームページへ!!";

PHPは、テキスト中に変数名を書くことで、その変数の内容をテキストに展開する変数展開という機能を備えている。変数展開は、変数名をブレース {...} で囲む。(じつはブレースで囲まなくても変数展開できるのだが、変数展開であることを明示するためにブレースで囲むことをお勧めする。)

変数 $single1 にはシングルクォーテーション '...' で囲んだ変数展開を含む文字列を、変数 $double1 にはダブルクォーテーション "..." で囲んだ変数展開を含む文字列を代入し、HTMLテキスト中で表示してみる。
3.{$single1} ぱふぅ家のホームページへ!!
4.ようこそ! ぱふぅ家のホームページへ!!
ダブルクォーテーション "..." で囲んだ変数展開は実行されているが、シングルクォーテーション '...' では展開されずに変数名がそのまま表示されてしまった。
このように、変数展開したいときにはダブルクォーテーションで囲まなければならない

解説:クォーテーションとエスケープシーケンス

quotation.php

  22: //$single3 = 'シングルクォーテーション '...'';      //エラーになってしまう
  23: $double3 = "シングルクォーテーション '...'";

文字列中にクォーテーションを含めたいときにはどうなるだろうか。
まず、シングルクォーテーションの方だが、シングルクォーテーション '...' に含めるとエラーになってしまうためコメントアウトしている。PHP処理系から見たら、どこが文字列の終端か分からなくなってしまうだめだ。
一方のダブルクォーテーション "..." の中にはシングルクォーテーションを記載することができる。
5.シングルクォーテーション '...'
次にダブルクォーテーションだが、シングルクォーテーション '...' の中ではそのまま記載することができる。
一方のダブルクォーテーション "..." の中では、マークまたは (バックスラッシュ)に続けてダブルクォーテーションを書くことでエラーを出さずに記述ができる。
6.ダブルクォーテーション "..."
7.ダブルクォーテーション "..."
このようなときに使うマークまたは (バックスラッシュ)をエスケープシーケンスといい、その後に続く1文字をそのまま文字として扱うことができる。
また、エスケープシーケンスには、下表のような使い方もある。
エスケープシーケンス
エスケープシーケンス対応文字16進文字コード
\n改行0x0A
\r復帰0x0D
\tタブ0x09
\aアラーム0x07
\eエスケープ文字0x1B
\f改ページ0x0C
\xhh16進コードでhhの文字0xhh
\ddd8進コードでdddの文字--

quotation.php

  24: $single4 = 'ダブルクォーテーション "..."';
  25: $double4 = "ダブルクォーテーション \"...\"";

解説:ヒアドキュメント

quotation.php

  59: $HtmlBody =<<< EOT
  60: <body>
  61: <h2>シングルクォーテーションとダブルクォーテーション</h2>
  62: 
  63: <ol>
  64: <li>{$single1}</li>
  65: <li>{$double1}</li>
  66: <li>{$single2}</li>
  67: <li>{$double2}</li>
  68: <li>{$double3}</li>
  69: <li>{$single4}</li>
  70: <li>{$double4}</li>
  71: </ol>
  72: 
  73: </body>
  74: 
  75: EOT;

PHPには、長い文字列を表すのにヒアドキュメントという機能が備わっている。
上のプログラムは、変数 $HtmlBody に、EOT から EOT; までの内容を代入する。変数展開も行われるし、タブや改行もそのまま代入する。ただし、エスケープシーケンスには対応していない。
このようにPHPの変数中でHTMLを扱うときに、ヒアドキュメント を使うと視認性がよくなる。

ヒアドキュメント は次のようにして使う。
$変数 =<<< EOT
テキスト
EOT;
EOT は英数字なら何でもいいが、かならず、開始と終了に同じ英数字を指定すること。
ここでは、変数への代入を例にしたが、計算式中や、関数・メソッドへの引数でもヒアドキュメントを使うことができる。

参考サイト

(この項おわり)
header