除了正则表达式之外,转义序列和字符串运算符之间有什么区别?
下面是我的测试代码:
<!DOCTYPE html>
<html>
<head>
<title>test</title>
</head>
<body>
<?php
$a = "<a href='"http://www.google.com'" onclick='"alert(1)'">Im Google</a>";
$b = "<a href="."http://www.google.com"." onclick="."alert(2)>Im Google, too</a>";
echo "$a<br>$b";
?>
</body>
结果:
结果
更多结果:
a元素的两个href具有双引号
好吧,让我们看看结果:
$a = "<a href='"http://www.google.com'" onclick='"alert(1)'">Im Google</a>";
是:
<a href="http://www.google.com" onclick="alert(1)">Im Google</a>
而这个:
$b = "<a href="."http://www.google.com"." onclick="."alert(2)>Im Google, too</a>";
是:
<a href=http://www.google.com onclick=alert(2)>Im Google, too</a>
苹果和桔子。
两者在HTML中恰好具有相同的含义,因为没有一个参数包含空格。但如果他们真的这样做了,你会很快注意到差异。
反斜杠'
在"字符串上下文"中用于转义某些字符,使其在封装字符串的字符串中具有相同的字符,或者插入一些特殊字符,如新行'n
。
"嵌入式代码"answers"正则表达式"之间有区别:
- 您提供的源代码是嵌入HTML中的PHP代码
- 正则表达式("regex")暗示了一些可以在这样的字符串中定义的逻辑:
^[a-zA-Z0-9_]{1,}$
及其内部的"特殊字符"也可以用反斜杠"转义",包括反斜杠本身-(用另一个反斜杠)-与"正常"字符串相同
您可以像第一个例子(a)那样转义引号,但这会使代码更加复杂。您可以根据需要简单地使用双引号或单引号,如下所示:
- "Monica很有吸引力…车"
- 桑迪说:"嗨!"
在双引号字符串上下文中嵌入变量时,请记住使用"大括号"{ }
,如下所示:
$foo = 'bar';
echo "I like Cadbury's lunch-{$foo}";
编辑
正如评论中所指出的:
"大括号"引用是一种很好的做法,因为当在一些字母数字字符之前直接使用变量时,它可以防止令人讨厌的意外,如果不使用这些字符,您可能会出现"E_NOTICE"错误,或者您将不得不使用串接。