PHPで文字列の表すには、シングルクォーテーション '...' とダブルクォーテーション "..." の2種類がある。実際にプログラムを作り、それぞれの働きの違いを見ていく。また、ヒアドキュメントについて紹介する。
サンプル・プログラム
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テキスト中で表示してみる。
このように、変数展開したいときにはダブルクォーテーションで囲まなければならない。
変数 $single1 にはシングルクォーテーション '...' で囲んだ変数展開を含む文字列を、変数 $double1 にはダブルクォーテーション "..." で囲んだ変数展開を含む文字列を代入し、HTMLテキスト中で表示してみる。
3.{$single1} ぱふぅ家のホームページへ!!ダブルクォーテーション "..." で囲んだ変数展開は実行されているが、シングルクォーテーション '...' では展開されずに変数名がそのまま表示されてしまった。
4.ようこそ! ぱふぅ家のホームページへ!!
このように、変数展開したいときにはダブルクォーテーションで囲まなければならない。
解説:クォーテーションとエスケープシーケンス
quotation.php
22: //$single3 = 'シングルクォーテーション '...''; //エラーになってしまう
23: $double3 = "シングルクォーテーション '...'";
文字列中にクォーテーションを含めたいときにはどうなるだろうか。
まず、シングルクォーテーションの方だが、シングルクォーテーション '...' に含めるとエラーになってしまうためコメントアウトしている。PHP処理系から見たら、どこが文字列の終端か分からなくなってしまうだめだ。
一方のダブルクォーテーション "..." の中にはシングルクォーテーションを記載することができる。
まず、シングルクォーテーションの方だが、シングルクォーテーション '...' に含めるとエラーになってしまうためコメントアウトしている。PHP処理系から見たら、どこが文字列の終端か分からなくなってしまうだめだ。
一方のダブルクォーテーション "..." の中にはシングルクォーテーションを記載することができる。
5.シングルクォーテーション '...'
次にダブルクォーテーションだが、シングルクォーテーション '...' の中ではそのまま記載することができる。
一方のダブルクォーテーション "..." の中では、¥マークまたは ⧵(バックスラッシュ)に続けてダブルクォーテーションを書くことでエラーを出さずに記述ができる。
また、エスケープシーケンスには、下表のような使い方もある。
一方のダブルクォーテーション "..." の中では、¥マークまたは ⧵(バックスラッシュ)に続けてダブルクォーテーションを書くことでエラーを出さずに記述ができる。
6.ダブルクォーテーション "..."このようなときに使う¥マークまたは ⧵(バックスラッシュ)をエスケープシーケンスといい、その後に続く1文字をそのまま文字として扱うことができる。
7.ダブルクォーテーション "..."
また、エスケープシーケンスには、下表のような使い方もある。
エスケープシーケンス | 対応文字 | 16進文字コード |
---|---|---|
\n | 改行 | 0x0A |
\r | 復帰 | 0x0D |
\t | タブ | 0x09 |
\a | アラーム | 0x07 |
\e | エスケープ文字 | 0x1B |
\f | 改ページ | 0x0C |
\xhh | 16進コードでhhの文字 | 0xhh |
\ddd | 8進コードで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を扱うときに、ヒアドキュメント を使うと視認性がよくなる。
ヒアドキュメント は次のようにして使う。
ここでは、変数への代入を例にしたが、計算式中や、関数・メソッドへの引数でもヒアドキュメントを使うことができる。
上のプログラムは、変数 $HtmlBody に、EOT から EOT; までの内容を代入する。変数展開も行われるし、タブや改行もそのまま代入する。ただし、エスケープシーケンスには対応していない。
このようにPHPの変数中でHTMLを扱うときに、ヒアドキュメント を使うと視認性がよくなる。
ヒアドキュメント は次のようにして使う。
$変数 =<<< EOTEOT は英数字なら何でもいいが、かならず、開始と終了に同じ英数字を指定すること。
テキスト
EOT;
ここでは、変数への代入を例にしたが、計算式中や、関数・メソッドへの引数でもヒアドキュメントを使うことができる。
参考サイト
- 文字列:PHP公式
(この項おわり)