PHP で引用符をエスケープする

Subodh Poudel 2023年1月30日
  1. 引用符をエスケープするには、引用符の前にバックスラッシュ\を使用する
  2. PHP で文字列から引用符をエスケープするには、ヒアドキュメント構文 <<< を使用する
  3. PHP で引用符をエスケープするには、一重引用符または二重引用符を交互に使用する
PHP で引用符をエスケープする

この記事では、PHP で文字列内の引用符をエスケープする方法を紹介します。

引用符をエスケープするには、引用符の前にバックスラッシュ\を使用する

バックスラッシュ\を使用して、PHP の特殊文字をエスケープできます。PHP の文字列に引用符を組み込むと、スクリプトは解析エラーをスローします。したがって、スクリプトがエラーなしで実行されるように、引用符をエスケープする必要があります。この手法は、直接話法を含む文字列を出力する必要がある場合に使用できます。直接話法​​の文章を考えてみましょう。She asked me, " Are you going out tonight ?". の文字列を出力すると、解析エラーがスローされます。これは、文字列全体が" "の二重引用符で囲まれるためです。コードのフロー中に Are の前の二重引用符が検出された場合、コンパイラはその後の文字列を予期しません。むしろ、セミコロンまたは連結演算子を想定しています。したがって、コンパイラは解析エラーをスローします。

たとえば、Are you going out today ? というテキストを囲む 2つの二重引用符の直前にバックスラッシュを記述します。変数 $text に文字列を割り当て、echo コマンドを使用して変数を出力します。したがって、二重引用符付きの完全な直接話法文が表示されます。

サンプルコード:

#php 7.x
<?php
$text = "She asked me, \" Are you going out tonight ?\"";
echo $text
?>

出力:

She asked me, " Are you going out tonight ?".

PHP で文字列から引用符をエスケープするには、ヒアドキュメント構文 <<< を使用する

ヒアドキュメント構文 <<< を使用して、PHP の文字列から引用符をエスケープできます。識別子は、新しい行の構文と文字列の直後に続きます。識別子内の文字列またはテキストはヒアドキュメントテキストと呼ばれます。ヒアドキュメントの終わりを示すために、最初の列の改行の文字列の後に同じ識別子を使用する必要があります。終了を示すために、終了識別子の後にセミコロンを使用する必要があります。ヒアドキュメントテキストは、二重引用符を使用せずに二重引用符で囲まれていると見なされます。ヒアドキュメントテキストの二重引用符と一重引用符は自動的にエスケープされます。ヒアドキュメントで変数を使用し、それらに引用符を適用することはできます。

たとえば、文字列 hellogoodbye を格納するために、$start$end の 2つの変数を作成します。別の変数 $heredoc を作成し、それにヒアドキュメント構文 <<< を書き込みます。構文の直後に識別子 term を記述します。次の行に、ヒアドキュメントのテキストを記述します。$start 変数をテキストの先頭で二重引用符で囲みます。We can use the "heredocs" to incorporate the 'single quotes' and the "double quotes" in a string. というテキストを記述します。上記のように、heredocsdouble qoutes という単語を二重引用符で囲み、single quote という単語を一重引用符で囲むことに注意してください。最後に、$end 変数を二重引用符で囲みます。次の行で、ヒアドキュメントを終了した後、セミコロンで term 識別子を記述します。次に、$heredoc 変数を出力します。

上記の例では、一重引用符と二重引用符でテキストを出力します。ヒアドキュメント構文 <<< を使用すると、PHP の文字列から引用符を簡単にエスケープできます。ヒアドキュメントの詳細については、PHP マニュアルを確認してください。

コード例:

#php 7.x
<?php
$start = "hello";
$end = "goodbye";
$heredoc = <<<term
"$start", We can use the "heredocs" to incorporate the 'single quote' and the "double quotes" in a string. "$end". 
term;
echo $heredoc;
?>

出力:

"hello", We can use the "heredocs" to incorporate the 'single quote' and the "double quotes" in a string. "goodbye".

PHP で引用符をエスケープするには、一重引用符または二重引用符を交互に使用する

二重引用符を使用して一重引用符をエスケープし、一重引用符を使用して二重引用符をエスケープできます。したがって、PHP では文字列内の引用符をエスケープできます。文字列で二重引用符と一重引用符を使用する場合、わずかな違いがあります。二重引用符を使用しながら文字列補間を実行できますが、一重引用符ではこれができません。補間は、文字列内の変数を参照してそれらの値を評価する方法です。

たとえば、一重引用符で囲んだ文字列 Over and over again を記述します。over という単語を二重引用符で囲みます。echo コマンドを使用して文字列を表示します。次の行で、同じ文字列を二重引用符で囲み、一重引用符を使用して同じ単語 over を折り返します。文字列を出力します。

以下の例では、最初の文字列で二重引用符がエスケープされ、2 番目の文字列で一重引用符がエスケープされます。代替引用符を使用して文字列全体を折り返すことが可能です。

サンプルコード:

# php 7.x
<?php
echo 'Over and "over" again'."<br>";
echo "Over and 'over' again";
?>

出力:

Over and "over" again 
Over and 'over' again
著者: 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

関連記事 - PHP String