備忘録 2012.03.01
改行文字は「”」で囲む-PHPでの「”」と「’」の違い
ログファイルにデータを追加するスクリプトを組んでいたときの話。
追加するデータの末尾に改行文字を付加したのだが、改行として扱われない。なぜだろう?
通常、改行文字は \r\n と表す。確かにその通りに入力している。
調べてみると、
「Unix ベースのシステムでは改行に \n キャラクタを使用します。 Windows ベースのシステムでは \r\n を使用します。 マッキントッシュベースのシステムでは \r を使用します。」
と記されているので、私のやり方で間違いはないはず。
でも、改行文字が単なる文字として \r\n とファイル内に記録されてしまう。
問題は改行文字を囲むシングルクォーテーションにありました。
シングルクォーテーションとダブルクォーテーションの違いは概ね次の通り。
●ダブルクォーテーション ・・・文字列を論理的解釈により展開する
●シングルクォーテーション・・・文字列を単なる文字として展開する
つまり、ダブルクォーテーションを使うと文字列の途中に変数を入れることもできるわけです。
$hoge = "文字列内に$bufを入れます。\r\n";
変数や論理的解釈を必要とする改行文字を扱うときは、ダブルクォーテーションで囲まなければならなかったんですね。