PHPで変数にHTMLを格納する場合の、シングルクォーテーション(’)とダブルクォーテーション(”)の違いと使い分け

wordpress

WordPress用のプラグイン開発で、PHPの変数に長めの文章を格納する際のメモです。
以下のようにHTMLなどコードを含めるケースについて、シングルクオーテーションとダブルクォーテーションでどちらを使うか毎回迷います。ドットで文字列結合したり、改行するたびに 「+=」演算子を使ったりと様々です。


<!-- wp:heading {"level":2} -->
<h2>サンプルの見出しです</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>これは段落のサンプルテキストです。</p>
<!-- /wp:paragraph -->

<!-- wp:image {"id":123,"sizeSlug":"large"} -->
<figure class="wp-block-image size-large"><img src="https://example.com/image.jpg" alt="サンプル画像" /></figure>
<!-- /wp:image -->
目次

シングルクォーテーション ('):

  • 文字列をそのまま扱う
  • 特殊な文字(\n など)は解釈されず、リテラル文字として扱われる
  • 変数も内部で展開されない

もし $content にシングルクォーテーションを使った場合、HTML内でのダブルクォーテーションをそのまま使うことができるため、エスケープする必要がありません。

$content = '
<!-- wp:heading {"level":2} -->
<h2>サンプルの見出しです</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>これは段落のサンプルテキストです。</p>
<!-- /wp:paragraph -->

<!-- wp:image {"id":123,"sizeSlug":"large"} -->
<figure class="wp-block-image size-large"><img src="https://example.com/image.jpg" alt="サンプル画像" /></figure>
<!-- /wp:image -->
';

ダブルクォーテーション ("):

  • 特殊文字(例えば \n など)を解釈して反映できる
  • 変数を文字列内に直接展開することができる
$content = "
<!-- wp:heading {\"level\":2} -->
<h2>サンプルの見出しです</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>これは段落のサンプルテキストです。</p>
<!-- /wp:paragraph -->

<!-- wp:image {\"id\":123,\"sizeSlug\":\"large\"} -->
<figure class=\"wp-block-image size-large\"><img src=\"https://example.com/image.jpg\" alt=\"サンプル画像\" /></figure>
<!-- /wp:image -->
";

自分の使い分け

  • シングルクォーテーション ('): 文字列内に展開する変数がない場合はシングルクォーテーションがシンプルでエスケープの必要もないためこちらを使っています。可読性が高くなるとバグも減ります。
  • ダブルクォーテーション ("): 文字列内で展開する変数が多い場合や、特殊文字(改行 \n など)を含めたい場合はダブルクォーテーションにしています。フレームワークを使ったPHPでの画面開発などでは基本はこちらですね。
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次