PHP で一重引用符と二重引用符を区別する

Subodh Poudel 2023年1月30日
  1. PHP での一重引用符と二重引用符の概要
  2. PHP での文字列と変数の補間中の単一引用符と二重引用符の違い
  3. PHP でアポストロフィをエスケープする際のシングルクォートとダブルクォートの違い
PHP で一重引用符と二重引用符を区別する

この記事では、PHP での一重引用符と二重引用符の違いを紹介します。

PHP での一重引用符と二重引用符の概要

PHP では、引用符を使用して、値が文字列リテラルであることを指定します。引用には 2つの異なるタイプがあります。これらは一重引用符'と二重引用符"ですが、herdocnowdoc などの文字列構文を使用して文字列リテラルを指定できます。この記事では、引用符に焦点を当てます。文字列リテラルを一重引用符または二重引用符で囲んで、値を文字列として表します。例を以下に示します。

サンプルコード:

<?php

echo "hey you \n";
echo 'hey you';

?>

出力:

hey you
hey you

上記の例では、両方の引用符の使用は同じように見えます。しかし、それだけではありません。引用符の機能は同じですが、動作方法に違いがあります。以下では、一重引用符と二重引用符の重要な違いについて説明します。

PHP での文字列と変数の補間中の単一引用符と二重引用符の違い

一重引用符と二重引用符の最も重要な違いは、文字列と変数を補間する場合にあります。一重引用符は、文字列と変数を補間しません。一重引用符で囲まれた内容は、そのまま出力されます。ほとんどの場合、一重引用符内に変数やエスケープシーケンスのコンパイルはありません。

ただし、二重引用符の場合、引用符で囲まれた変数は文字列で補間されます。これは、文字列内の変数が評価されることを意味します。したがって、文字列と変数を補間するときに二重引用符を使用するのは簡単です。一重引用符に対する二重引用符の利点は、. を使用して文字列と変数を連結する必要がないことです。オペレーター。ただし、変数は文字列で評価する必要があるため、二重引用符を使用すると、一重引用符を使用するよりも少し遅くなります。

たとえば、変数 $name を作成し、それに文字列 Bond を書き込みます。次に、文字列 The name is $name. と書きます。文字列を二重引用符で囲みます。echo 関数を使用して文字列を出力します。同様に、次の行で正確な文字列を一重引用符で囲みます。

サンプルコード:

<?php

$name = "Bond";
echo "The name is $name. \n";
echo 'The name is $name.'; 

?>

出力:

The name is Bond.
The name is $name.

出力が示すように、変数 $name は二重引用符を使用して評価されます。一重引用符を使用している間、文字列はそのまま出力されます。これは、PHP の一重引用符と二重引用符の大きな違いの 1つです。

PHP でアポストロフィをエスケープする際のシングルクォートとダブルクォートの違い

このセクションでは、PHP での二重引用符と一重引用符を使用したエスケープシーケンスについて説明します。エスケープシーケンスは、二重引用符内で文字をエスケープするために使用できます。一方、ほとんどのエスケープシーケンスは、一重引用符で囲まれて解釈されません。ただし、アポストロフィをエスケープする場合は例外があります。

二重引用符を使用して文字列にアポストロフィを書き込む場合は、アポストロフィをエスケープする必要はありません。ただし、一重引用符の場合は、\'を使用してエスケープする必要があります。以下に例を示します。

サンプルコード:

<?php

echo "Napoleon Hill's \"Think and grow rich\". \n";
echo 'Napoleon Hill\'s \"Think and grow rich\".';

?>

出力:

Napoleon Hill's "Think and grow rich".
Napoleon Hill's \"Think and grow rich\".

上記のコードでは、アポストロフィが二重引用符を使用してエスケープしてはならないことは明らかです。二重引用符は、文字エスケープを使用して二重引用符内でもエスケープされます。一方、一重引用符の場合、アポストロフィは文字エスケープを使用してエスケープされます。後者の場合、文字エスケープを使用している間は二重引用符はエスケープされません。

これらは、PHP の一重引用符と二重引用符の大きな違いです。

著者: Subodh Poudel
Subodh Poudel avatar Subodh Poudel avatar

Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.

LinkedIn