我有一个使用'转义字符
的工作JavaScript代码此反斜杠转义字符将特殊字符转换为字符串字符
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
var x = 'It''s alright';
var y = "We are the so-called '"Vikings'" from the north.";
document.getElementById("demo").innerHTML = x + "<br>" + y;
</script>
</body>
</html>
以上代码在浏览器中的输出如下:
It's alright
We are the so-called "Vikings" from the north.
我的问题是'转义字符的实现是否在PHP中以类似的方式工作,或者在PHP中实现有任何差异?
谢谢。
我的问题是'转义字符的实现是否在PHP以及[JavaScript]中以类似的方式工作
是的。
或者在PHP中的实现有什么不同?
是的。关于反斜杠作为转义,有两个重要的区别:
-
在PHP中,使用反斜杠作为转义是非常不同的,这取决于您是使用单引号字符串(
'foo'
)还是双引号字符串("foo"
)。 -
转义序列是不同的,尽管有很多重叠。
单引号与双引号
在PHP中,单引号和双引号字符串在转义序列方面有很大的区别(以及更多,参见下面的¹)。文档中的详细信息,但在单引号字符串中,如果下一个字符是'
或反斜杠,则反斜杠仅是转义字符;在所有其他情况下,它是一个字面反斜杠。所以
echo 'foo'nbar';
输出<>之前foo ' nbar之前与
echo "foo'nbar";
输出<>之前喷火酒吧之前在JavaScript中,单引号字符串和双引号字符串之间的唯一区别是'
或"
是否可以不转义。您可以在两者中使用的转义序列完全相同。
转义序列
上面链接的PHP文档列出了PHP转义序列。JavaScript规范列出了JavaScript转义序列,尽管MDN的列表更容易阅读。同样,它们有很多重叠之处(都受到C语言的启发),但也有不同之处。¹只要我们在讨论PHP字符串和JavaScript字符串,请注意,在双引号PHP字符串中,变量是扩展的;在单引号中,它们不是。JavaScript没有这样的功能,但是它在ES2015中有类似的(甚至更强大的)新模板字面量。