为什么'\ n'==='\\ n'在PHP中是真的?

时间:2012-07-02 23:49:51

标签: php string newline

我理解:

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

但是对于我的生活,我无法理解为什么'\n' === '\\n'。在我看来,'\\n'将等于三个独立的字符:两个单独的反斜杠,后跟字母n。

为什么PHP中'\n' === '\\n'为真?

3 个答案:

答案 0 :(得分:10)

从手册(section on single quoted strings):

  

要指定文字单引号,请使用反斜杠(\)对其进行转义。要指定文字反斜杠,请将其加倍(\\)。反斜杠的所有其他实例将被视为文字反斜杠

所以在单引号字符串\n中有两个字符,但\\n是一个字面反斜杠后跟字母'n' - 即相同的两个字符。

答案 1 :(得分:4)

反斜杠仍然是单引号字符串中的转义字符(它会转义单引号)。

这是非法的(例如,因为反斜杠会逃避结束报价):

$path = 'C:\';

所以\\必须映射到文字反斜杠以避免无意中的转义。

答案 2 :(得分:2)

这是因为'\\n'实际上是\n因为反斜杠是一个在单引号中表现奇怪的转义字符。它不会逃脱n,但会逃脱\