Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP如何处理双引号?_Php_Http - Fatal编程技术网

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中的引号

在PHP中

  • 如果我用一些字符串(例如$s=“str”)分配一个变量,并在脚本的其他地方使用相同的变量(例如$s==“cd”),PHP会用双引号来解析它,比如“str”还是仅仅是str

  • 2.假设某个参数在HTTP请求中传递给脚本,其中包含双引号(例如var=a“b),并且该参数正在脚本中的某个位置使用(如果($_GET[var]==“a”)),它是否会用双引号(例如“a”b)进行解析,如果是,中间的双引号将如何处理?PHP源代码中的引号是分隔字符串的语法。它们不是字符串数据的一部分


    URL中的引号应采用百分比编码,但客户端通常可以不使用百分比编码来处理它们。引号在URL的查询字符串中没有特殊意义,因此是数据的一部分。

    在php中定义字符串时:

    $a = "foo";
    
    字符串本身就是
    foo
    。引用不在其中。我们只是使用引号告诉PHP语言您将要定义一个字符串

    字符串本身可以包含引号。例如,在PHP
    foo“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\"";