\n
、\r
およびその他のバックスラッシュ エスケープ文字は、二重引用符とヒアドキュメントでのみ機能します。一重引用符と nowdoc (ヒアドキュメントの一重引用符バージョン) では、リテラルとして読み取られ\n
、\r
.
例:
<?php
echo "Hello\nWorld"; // Two lines: 'Hello' and 'World'
echo 'Hello\nWorld'; // One line: literally 'Hello\nWorld'
echo <<<HEREDOC
Hello\nWorld
HEREDOC; // Same as "Hello\nWorld"
echo <<<'NOWDOC'
Hello\nWorld
NOWDOC; // Same as 'Hello\nWorld' - only works in PHP 5.3.0+
この動作について詳しくは、PHP マニュアルを参照してください。
編集:
一重引用符と二重引用符の動作が異なる理由は、両方が異なる状況で必要になるためです。
たとえば、多くの改行を含む文字列がある場合は、二重引用符を使用します。
echo "This\nstring\nhas\na\nlot\nof\nlines\n";
ただし、ファイル名 (Windows の場合) や正規表現など、多くのバックスラッシュを含む文字列を使用する場合は、一重引用符を使用して単純化し、バックスラッシュのエスケープを忘れることによる予期しない問題を回避します。
echo "C:\this\will\not\work"; // Prints a tab instead of \t and a newline instead of \n
echo 'C:\this\would\work'; // Prints the expected string
echo '/regular expression/'; // Best way to write a regular expression