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での画面開発などでは基本はこちらですね。