转义序列和字符串运算符之间的区别是什么


What is difference between escape sequences and string operator?

除了正则表达式之外,转义序列和字符串运算符之间有什么区别?

下面是我的测试代码:

<!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"错误,或者您将不得不使用串接。