[解決済み] PHPの文字列で、シングルクオートとダブルクオートの違いは何ですか?
2022-03-22 20:58:22
質問
PHPのコードで、文字列が一重引用符で囲まれていたり、二重引用符で囲まれていたりするのを見かけるのですが、なぜなのでしょうか?
ただ、.NETやC言語では、シングルクォートで囲まれている場合、それは文字列ではなく、文字であることを意味していますね。
どのように解決するのですか?
PHPの文字列 のみならず に の方法ではなく 四 の方法で行います。
-
一重引用符で囲まれた文字列
は、ほぼ完全にそのまま表示されます。例外として、リテラルなシングルクォートを表示する場合は、バックスラッシュでエスケープすることができます。
\'
バックスラッシュを表示するには、別のバックスラッシュでエスケープすることができます。\\
( そう、シングルクォートされた文字列もパースされるのです ). -
ダブルクォート文字列
はエスケープされた文字 (正規表現を含む) を表示し、文字列内の変数が評価されます。ここで重要なのは
中括弧を使って、評価したい変数名を分離することができます。
. 例えば、次のような変数があるとします。
$type
を実行したい場合echo "The $types are"
. これは、変数$types
. これを回避するにはecho "The {$type}s are"
左中括弧はドル記号の前でも後でもかまいません。次の例を見てください。 文字列のパース で、配列変数の使い方などを確認します。 -
ヘレドック
文字列の構文は、二重引用符で囲まれた文字列のように動作します。始まりは
<<<
. この演算子の後に、識別子を指定し、改行します。その後に文字列そのものが続き、さらに同じ識別子で引用を閉じます。この構文では、引用符をエスケープする必要はありません。 -
ナウドック
(PHP 5.3.0 以降) の文字列構文は、基本的に単一引用符で囲まれた文字列と同じように動作します。違いは、シングルクォートとバックスラッシュをエスケープする必要がないことです。nowdoc の識別は、同じ
<<<
のシーケンスはヒアドキュメントに使われますが、その後に続く識別子はシングルクォートで囲まれます。<<<'EOT'
. nowdocではパースは行われません。
注意事項 一重引用符の中の一重引用符、二重引用符の中の二重引用符はエスケープする必要があります。
$string = 'He said "What\'s up?"';
$string = "He said \"What's up?\"";
速度です。
シングルクォートがダブルクォートより速いというのは、あまり重要視しない方がいいと思います。特定の状況下では、シングルクォートの方が速いかもしれません。以下はその記事です。
PHP 4.3 以降、シングルクォートとダブルクォートの速度が基本的に同じであることを説明します。
(
Useless Optimizations
の下にある、セクション
C
). また、この
ベンチマークページ
には、シングルクォートとダブルクォートの比較があります。ほとんどの比較は同じです。1つだけ、ダブルクォートがシングルクォートより遅いという比較があります。
関連
-
[解決済み] 文字列リテラルの前にある'b'文字は何を意味するのでしょうか?
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] パラメータに**(ダブルスター/アスタリスク)、*(スター/アスタリスク)がありますが、これはどういう意味ですか?
-
[解決済み] 複数行の長い文字列を作成するためのPythonicな方法
-
[解決済み] 一重引用符で囲まれた文字列の一重引用符をエスケープするには
-
[解決済み] YAMLです。YAML の文字列には引用符が必要ですか?
-
[解決済み】大文字・小文字を区別しない「Contains(string)
-
[解決済み】PHPの'foreach'は実際どのように動作するのですか?
-
[解決済み] リファレンス - このシンボルはPHPで何を意味するのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】XAMPPポート80をPID 4の「Unable to open process」が使用中 [重複] XAMPPポート80をPID 4の「Unable to open process」が使用中。]
-
[解決済み] 整形されていない数値が発生しました。
-
[解決済み】PHPからPythonスクリプトを実行する
-
[解決済み】 libapache2-mod-php7 パッケージが見つからない。
-
[解決済み】子テーマのCSSが親テーマをオーバーライドしない
-
[解決済み】mysqli_select_db()は、パラメータ1がmysqliであることを期待し、文字列が与えられる。
-
[解決済み】file_get_contents( )が動作しない。
-
[解決済み】phpMyAdmin: シークレットパスフレーズ?
-
[解決済み] PHP product.php?id=1 のような URL を作成する方法
-
[解決済み] mysql_field_nameを新しいmysqliに変更します。