トップ 言語 PHP プログラミング基礎(文法) 文字列 (シングル/ダブル)コーテーションとエスケープシーケンス

PHPの文字列の(シングル/ダブル)コーテーションとエスケープシーケンス

PHPで文字列を扱う場合は文字列をシングルクォーテーション(')とダブルクォーテーション(")で囲みます。また、ダブルクォーテーションで文字列を囲んだ場合はその中で変数やエスケープシーケンスが利用でき、 シングルクォーテーションで囲んだ場合は変数やエスケープシーケンスはそのままの文字として扱われます。

▲記事トップへ

目次

この記事の目次です。

1. PHPのシングル/ダブルクォーテーションとは
2. シングル/ダブルクォーテーションの挙動
3. シングル/ダブルクォーテーションの違い
4. エスケープシーケンス(特殊文字のエスケープ)
5. シングル/ダブルクォーテーションの処理速度の差

もっと知識を広げるための参考
更新履歴

1. PHPのシングル/ダブルクォーテーションとは

PHPで文字列の値を表すときは、シングルクォーテーション(')またはダブルクォーテーション(")で囲みます。

シングル/ダブルクォーテーションとは、

です。

2. シングル/ダブルクォーテーションの挙動の違い

以下は、PHPのシングルクォーテーション(')とダブルクォーテーション(")を使用したサンプルプログラムです。

サンプルソース

シングルクォーテーション(')とダブルクォーテーション(")の両方に変数とエスケープシーケンスを記述しています。

<?php
$hensuu = "World";
$str1 = 'Hello $hensuu!\n';
$str2 = "Hello $hensuu!\n";
print $str1;
print $str2;
print "\n";
?>

実行結果

PHPがインストールされている環境でphpコマンドを使用して実行します。 ここでは、sample.phpというファイル名で保存したソースファイルを実行しています。

$ php sample.php
Hello $hensuu!\n
Hello World!

シングルクォーテーション(')の場合は$hensuuがそのまま表示され、ダブルクォーテーション(")は$hensuuに設定したWorldが表示されました。

3. シングル/ダブル・クォーテーションの違い

シングルクォーテーション(')とダブルクォーテーション(")には違いがあります。

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

シングルクォーテーションで囲んだ場合は、ダブルコーテーションで囲んだ場合と違い、 文字列中で変数やエスケープシーケンスが利用できません。

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

ダブルクォーテーションで囲んだ文字列中では、変数が展開されます。 ダブルクォーテーションで囲むとその中で変数やエスケープシーケンスが利用できます。

エスケープシーケンスは、例えば改行を表す「\n」などの特殊なコードです。

4. エスケープシーケンス(特殊文字のエスケープ)

PHPで変数に文字列の値を代入する場合は、シングルクォーテーション(')またはダブルクォーテーション(")のいずれかで囲んで代入できます。

ところで、PHPで改行を表す\nなどの特殊な文字や記号を使うにはどうしたらよいでしょうか。 答えはエスケープを行うです。

エスケープとは

エスケープとは、プログラムで文字列を扱う際に、特定の記号文字などを別の解釈を行うようにする処理のことをいいます。

エスケープシーケンスとは

エスケープに用いる文字をエスケープシーケンスあるいはエスケープ文字といいます。

PHPのダブルコーテーション内ではエスケープシーケンスが利用できる

シングルクォーテーションで囲んだ場合は、特殊な文字や記号(エスケープシーケンス)はそのままの文字として扱われます。 文字列中に\nを記述すると\nが表示されます。

ダブルクォーテーションで囲んだ場合はエスケープシーケンスが使用できます。 文字列中に\nとすると改行が挿入されます。 また、エスケープシーケンスをそのままの文字で表示したい場合は特別な書き方で特殊文字を表す必要があります。

エスケープシーケンス一覧

PHPでは、ダブルクォーテーションで囲んだ場合、以下に示すような\(半角円)から始まるエスケープシーケンスが利用できます。

PHPのダブルクォーテーション内で利用できるエスケープシーケンス
文字エスケープシーケンスエスケープシーケンスが表す文字
\"ダブルクォーテーション
\n改行
\r復改
\tタブ
\\バックスラッシュ(半角円マーク)
\$ドル記号
\{左波括弧
\}右波括弧
\[左角括弧
\]右角括弧
\0~\777まで8進数形式で表したASCII文字
\x0~\xFFまで16進数形式で表したASCII文字

5. シングル/ダブル・クォーテーションの処理速度の差

当然ですが、シングルクォーテーションの方が速いです。 ダブルコーテーションはエスケープシーケンスの処理などが行われるためシングルコーテーションで囲まれた文字列の処理です。 2倍近く速度差があるとも言われています。

PHPでは特殊文字を使用するなどの理由がない場合はシングルコーテーションを使用した方がよさそうですね。

もっと知識を広げるための参考

更新履歴

更新履歴になります。

戻る

スポンサーリンク

サイト内のページ

言語
C・C++ /HTML /Java /JavaScript /PHP /シェルスクリプト

開発環境
Ant /Burp /Eclipse /Fiddler /gcc /gdb /Git /g++ /JDK /JMeter /JUnit /Teraterm /ZAP

技術・仕様
Ajax /CORBA /Jakarta EE(旧称J2EE、Java EE) /JNI

ライブラリ/Framework/CMS
bootstrap /jQuery /FuelPHP /Lucene /MyBatis /Seasar2 /Spring /Struts /WordPress

Web API
Google Maps

ITインフラOSとミドルウェア
Linux /Windows /シェル
ActiveMQ /Tomcat /MariaDB /MySQL /Nagios /Redis /Solr

ITインフラサーバー
公開Webサーバー

ITインフラネットワーク
プログラミング /構築

ITインフラセキュリティ
公開サーバーのセキュリティ

PC製品
ZOTAC

SI
ホームページの作り方

その他
IT用語 /ITスキル体系

スポンサーリンク

関連サイト内検索ツール

zealseedsおよび関連サイト内のページが検索できます。

IPアドレス確認ツール

あなたのグローバルIPアドレスは以下です。

18.191.228.88

HTMLの表示色確認ツール

パスワード生成ツール

文字数のプルダウンを選択して、取得ボタンを押すと「a~z、A~Z、0~9」の文字を ランダムに組み合わせた文字列が表示されます。

ここに生成されます。

スポンサーリンク