トップへ(mam-mam.net/)

PHPで文字列を括るシングルクォーテーションとダブルクォーテーションの違い

検索:

PHPで文字列を括るシングルクォーテーションとダブルクォーテーションの違い

PHPで文字列を括るシングルクォーテーションとダブルクォーテーションの違いや変数展開、エスケープ文字の使い方などをサンプルソースコードで解説

シングルクォーテーション(')とダブルクォーテーション(")

文字列はシングルクォーテーション(')又はダブルクォーテーション(")で括ります。

php > echo 'abc';
abc
php > echo "def";
def

変数に文字列を代入する場合も文字列はシングルクォーテーション(')又はダブルクォーテーション(")で括ります。

php > $a = 'abc';
php > echo $a;
abc
php > $b = "def";
php > echo $b;
def

ダブルクォーテーション(")を使って変数展開

ダブルクォーテーション(")を使った場合は変数展開できます。
変数展開する場合に変数と文字列の区切りがわからない場合があるので変数を「{」と「}」で括ることをお勧めします。
文字列連結の「ドット(.)」演算子を使って連結するのと同じです。

php > $a = "abc";
php > $b = "def$a";
php > echo $b;
defabc

//以下おすすめ
php > $a = "abc";
php > $b = "{$a}def";
php > echo $b;
abcdef

//「ドット(.)」演算子で連結
php > $a = "abc";
php > $b = $a."def";
php > echo $b;
abcdef

//配列を使う場合
php > $a = ["abc","def"];
php > echo "{$a[0]}{$a[1]}ghi";
abcdefghi

//連想配列を使う場合
php > $a = ["a"=>"abc","b"=>"def"];
php > echo "{$a["a"]}{$a["b"]}ghi";
abcdefghi


シングルクォーテーション(")を使った場合は変数展開できません。

php > $a = "abc";
php > $b = 'def$a';
php > echo $b;
def$a

エスケープ処理

シングルクォーテーション(')で括った文字列内でシングルクォーテーション(')自体を使用したい場合や、
ダブルクォーテーション(")で括った文字列内でダブルクォーテーション(")自体を使いたい場合や改行文字を入れたい場合等は
エスケープ文字「\」(バックスラッシュ)を使ってエスケープ処理を行います。


シングルクォーテーション(')でエスケープ処理できる文字一覧

エスケープシーケンス 文字
\' シングルクオーテーション(')
\\ バックスラッシュ(\)[Windowsでのエンマーク]


ダブルクォーテーション(")でエスケープできる文字一覧

エスケープシーケンス 文字
\" ダブルクオーテーション(")
\\ バックスラッシュ(\)[Windowsでのエン記号]
\$ ドル($)
\r 改行(0x0D)
\n ラインフィード(0x0A)[Linuxでの改行]
\t 水平タブ(0x09)
\t 垂直タブ(0x0B)
\e ESC(0x1B)[エスケープ]
\f フォームフィード(0x0C)
\x16進数2桁 16進数でASCII文字を表現
例えば
"\x4A\x61\x76\x61\x73\x63\x72\x69\x70\x74" は
「Javascript」です


例えばWindowsでの改行(\r\n)をエスケープ処理してみます。
シングルクォーテーション(')ではエスケープしません。
ダブルクォーテーション(")ではエスケープします。

php > $a = 'abc\r\n\r\n';
php > echo $a;
abc\r\n\r\n
php > $b = "def\r\n\r\n";
php > echo $b;
def

ダブルクォーテーション(")で括った文字列内にダブルクォーテーション文字を入れる場合はエスケープ文字「\」に続けて「"」を入れます。

php > $a = "\"abc\"";
php > echo $a;
"abc"

シングルクォーテーション(')で括った文字列内にシングルクォーテーション文字を入れる場合はエスケープ文字「\」に続けて「'」を入れます。

php > $a = '\'abc\'';
php > echo $a;
'abc'

シングルクォーテーション(')やダブルクォーテーション(")で括った文字列内にエスケープ文字「\」自体を1つ入れたい場合は「\\」を入れます。

php > $a = "\\200";
php > echo $a;
\200

php > $a = '\\200';
php > echo $a;
\200