2012-07-02 2 views
4

Я понимаю, что:Почему ' n' === '\ n' true в php?

'\n' // literally the backslash character followed by the character for lowercase n 
"\n" // interpreted by php as the newline character 

Но для жизни меня, я не могу понять, почему '\n' === '\\n'. На мой взгляд, '\\n' будет равно трем отдельным символам: две отдельные обратные косые черты, а затем буква n.

Почему '\n' === '\\n' true в PHP?

+2

Возможный дубликат [На PHP мне нужно избегать обратных косых черт?] (Http://stackoverflow.com/questions/3415683/in-php-do-i-need-to-escape-backslashes) и [Разница между одиночная кавычка и двойная кавычка в php] (http://stackoverflow.com/questions/3446216/difference-between-single-quote-and-double-quote-string-in-php) – mario

ответ

4

Обратная косая черта по-прежнему является символом escape в строках с одним кавычком (он выходит из буквенных одинарных кавычек).

Это незаконно, например, (так как обратный слеш закрывающей кавычки):

$path = 'C:\'; 

Так \\ должен отображаться в буквальную обратный косую черту, чтобы избежать самопроизвольного вытекания.

+3

+1 для обеспечения единственной законной причины использовать \\ в одной кавычной строке. (До этого ответа я не мог думать об этом). –

2

Это потому, что '\\n' на самом деле \n, потому что обратная косая черта - это символ перехода, который действует странно в одинарных кавычках. Он не избегает n, но избежать \

10

От руководства (section on single quoted strings):

Чтобы задать одинарную кавычку, избежать его с помощью обратной косой черты (\). Чтобы указать буквенную обратную косую черту, удвойте ее (\\). Все остальные случаи обратной косой черты будут рассматриваться как буквальное обратной косой черты

так в одной строки в кавычках \n два символа, но \\n является обратной косой черты, за которым следует буква «п» - то есть те же два символа.

+0

Просто попробовал в http: // codepad.org/xXixnCG9. Можно честно сказать, что это заставило меня немного умереть внутри. – JoeCortopassi

+3

@joecortopasi: почему? одиночные кавычки не интерпретируют ничего внутри них, ИСКЛЮЧАЮТ обратную косую черту, чтобы вы могли вставлять литеральные одинарные кавычки внутри строки с одной кавычкой. –

+0

По какой-то причине это не пришло мне в голову. Полностью законная причина для этого: p – JoeCortopassi

Смежные вопросы