PHP如何处理双引号?
在PHP中PHP如何处理双引号?,php,http,Php,Http,在PHP中 如果我用一些字符串(例如$s=“str”)分配一个变量,并在脚本的其他地方使用相同的变量(例如$s==“cd”),PHP会用双引号来解析它,比如“str”还是仅仅是str 2.假设某个参数在HTTP请求中传递给脚本,其中包含双引号(例如var=a“b),并且该参数正在脚本中的某个位置使用(如果($_GET[var]==“a”)),它是否会用双引号(例如“a”b)进行解析,如果是,中间的双引号将如何处理?PHP源代码中的引号是分隔字符串的语法。它们不是字符串数据的一部分 URL中的引号
2.假设某个参数在HTTP请求中传递给脚本,其中包含双引号(例如var=a“b),并且该参数正在脚本中的某个位置使用(如果($_GET[var]==“a”)),它是否会用双引号(例如“a”b)进行解析,如果是,中间的双引号将如何处理?PHP源代码中的引号是分隔字符串的语法。它们不是字符串数据的一部分
URL中的引号应采用百分比编码,但客户端通常可以不使用百分比编码来处理它们。引号在URL的查询字符串中没有特殊意义,因此是数据的一部分。在php中定义字符串时:
$a = "foo";
字符串本身就是foo
。引用不在其中。我们只是使用引号告诉PHP语言您将要定义一个字符串
字符串本身可以包含引号。例如,在PHPfoo“bar”
中,这是一个完全有效的字符串
但是现在我们如何定义这个字符串,因为即使字符串可以有引号,在PHP中引号也有特殊的含义?事实证明,我们可以向PHP发出信号,表示引号是字符串的一部分(而不是字符串的结尾),但在引号前面加上\
(这称为转义字符):
因此,即使源代码中有这些额外的字符,在运行这行PHP代码之后,$a
中的实际字符串仍然是foo“bar”
因此,字符串在变量中的存在方式与您需要在PHP中编写什么来实现这一点之间存在差异
如果你从来没有用PHP写过字符串(因为它们来自
$\u GET
),你就不必担心这个问题。当PHP字符串存储为变量$\u GET
或其他形式时,引号不再有意义。因此,如果$\u GET出现在echo语句中(例如echo“a$\u GET['x']b”),而x中有引号(例如a“b),则会回显忽略变量的引号(例如转义的引号)还是把它当作结尾引号?不,在你的例子中它的行为不同。你在做的是一个安全问题。在XSS上阅读,也许考虑使用模板引擎。没有模板引擎写一个更好的方法是<代码>回音'A'。“b”;所以,如果我不使用该函数对变量的引号进行转义,它们将被混淆为语句的结束引号?不,不会,但在您的例子中,直接从$\u GET
注入数据是一个安全问题。这就是我使用htmlspecialchars的原因。请阅读XSS。
$a = "foo \"bar\"";