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

Joe*_*ssi 6 php string newline

我明白那个:

'\n' // literally the backslash character followed by the character for lowercase n
"\n" // interpreted by php as the newline character
Run Code Online (Sandbox Code Playgroud)

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

'\n' === '\\n'PHP中的原因是什么?

Tim*_*ain 10

从手册(单引号字符串部分):

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

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

  • @joecortopasi:为什么?单引号字符串不会解释其中的任何内容,除了反斜杠,因此您可以在单引号字符串中插入文字单引号. (3认同)

Kit*_*ose 4

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

例如,这是非法的(因为反斜杠转义了结束引号):

$path = 'C:\';
Run Code Online (Sandbox Code Playgroud)

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

  • +1 提供了在单引号字符串中使用 \\ 的唯一合法理由。(在这个答案之前,我其实想不出)。 (3认同)