\n
, \r
и другие экранирующие символы обратной косой черты работают только в двойных кавычках и в heredoc.В одинарных кавычках и nowdoc (версия heredoc в одинарных кавычках) они читаются как буквальные \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