以下のサイトに詳しくまとめられてある。
http://d.hatena.ne.jp/kasahi/20070815/1187201809
違い
- エスケープできるものが違う
- 変数を展開できるかどうか。ダブルは展開される。シングルはそのまま。
よくわかっていないままだと、急にはまってしまうはめになる。。
例えば文字列内の改行コードを変換したい場合。
$data = <<< EOF hogehoge hogehoge … hoge~~~~~~. EOF; // 改行コードを文字列「改行」に変更!!! // str_replace('\n', '改行', $data); //×この場合たんに\nという文字列を探す str_replace("\n","改行", $data);
シングルクウォートでエスケープできるのは\と引用符のみ。
だから改行とかを置換したい場合は””ダブルを使わないといけない。
$data = 'hogehoge'; $single = 'この間についかします。{$data}シングルの場合。'; $double = "この間についかします。{$data}シングルの場合。"; echo $single; // この間についかします。$dataシングルの場合。 echo $double; //この間についかします。hogehogeシングルの場合。