PHP:http_build_query返回奇怪的符号

时间:2016-07-16 22:11:51

标签: php

我在两个不同的服务器上运行相同的代码,我得到了不同的结果

$dataS = array(
  'v' => '1',
  'tid' => 'test',
 );

$dataS = http_build_query($dataS);

一台服务器:

v=1&tid=test

其他服务器:

v=1&tid=test

为什么结果不一样? 如何在两台服务器上获得相同的结果,因为现在只有第一个结果是好的。

1 个答案:

答案 0 :(得分:1)

与已建议的其他答案一样,您的问题来自Set Col = Range("O2:O" & lastrowOU3) For Each Cell In Col If Cell.Offset(0, -2) = 0 And Cell.Offset(0, -1) = 0 Then Cell.Value = "NEW ITEM" If Cell.Offset(0, -2) = 0 And Cell.Offset(0, -1) = "NEW ITEM" Then Cell.Value = "NOT VALIDATED" If Cell.Offset(0, -2) < Date And Cell.Offset(0, -1) = "NEW ITEM" Then Cell.Value = "NOT VALIDATED" If Cell.Offset(0, -2) < Date And Cell.Offset(0, -1) = "VALIDATED" Then Cell.Value = "NOT VALIDATED" If Cell.Offset(0, -2) < Date And Cell.Offset(0, -1) = "NOT VALIDATED" Then Cell.Value = "NOT VALIDATED 1" If Cell.Offset(0, -2) < Date And Cell.Offset(0, -1) = "NOT VALIDATED 1" Then Cell.Value = "NOT VALIDATED 2" If Cell.Offset(0, -2) >= Date Then Cell.Value = "VALIDATED" Next 中的$arg_separator参数。

更确切地说,由于您没有填充它,因此该函数使用其默认值,这取决于服务器配置,如http://php.net/manual/en/function.http-build-query.php所述:

  

<强> arg_separator
  arg_separator.output用于分隔参数,但可以通过指定此参数来覆盖。

按照http_build_query()链接获取:

  

arg_separator.output string
      PHP生成的URL用于分隔参数。

因此,您的不同服务器似乎有不同的配置,因此结果不同 要摆脱这种情况,你可以:

  • 更改与首选分隔符不匹配的服务器配置
  • 或始终在arg_separator.output
  • 中加入$arg_separator
请注意:

  

只有第一个结果是好的

不正确:使用http_build_query()非常适合大多数情况,并且始终能够理解和正确处理。