为什么PHP不会逃避单引号字符串但保留正斜杠?

时间:2014-08-15 18:43:11

标签: php command-line-interface

是否有任何理由为什么即使使用单引号字符串,也需要通过\\打印正斜杠?

e.g。

php -r "print '\n';" # echo \n

由于单引号字符串不处理转义字符,为什么以下语句无效?

php -r "print '\n\';"

Parse error: parse error in Command line code on line 1

3 个答案:

答案 0 :(得分:2)

嗯,单引号中的字符串没有变量替换也没有转义,单引号字符串中的转义单引号除外,允许您在字符串中插入单引号而不必使用双引号该特殊情况的字符串。

因此,您的示例将正确转义字符串终止的单引号,从而导致未终止的字符串,从而导致解析错误。

因此,要在单引号字符串中的单引号前面打印反斜杠,您必须转义反斜杠本身。单引号和单引号前面的反斜杠是您在单引号字符串中必须转义的唯一字符。如果使用转义序列,则所有其他字符都不会应用它们的特殊含义。

答案 1 :(得分:1)

对于单引号,\'表示文字单引号。因此,您的字符串永远不会关闭。

答案 2 :(得分:1)

如果您的计算机上安装了Web服务器,则您要运行的脚本是 `

echo" \ n";

>`

为了打印换行符