2016-07-16 53 views
1

我在兩個不同的服務器上運行相同的代碼,我得到了不同的結果PHP:http_build_query返回奇怪的符號

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

$dataS = http_build_query($dataS); 

一臺服務器:

v=1&tid=test 

其他服務器:

v=1&tid=test 

爲什麼結果不一樣? 如何在兩臺服務器中獲得相同的結果,因爲現在只有第一個結果是好的。

+0

你能提供一些關於你的服務器之間的差異,如PHP版本,操作系統等的更多信息? –

回答

1

像其他已經建議的答案一樣,你的問題來自於http_build_query()$arg_separator參數。

更準確,因爲你沒有填充它,該函數使用它的默認值取決於服務器配置,由http://php.net/manual/en/function.http-build-query.php說:

arg_separator
arg_separator.output用於單獨的參數,但可以通過指定此參數來覆蓋。

而繼arg_separator.output鏈接,您可以:

arg_separator.output串
在PHP中使用的隔膜產生的URL分隔參數。

因此,看起來您的不同服務器有不同的配置,因此會有不同的結果。
爲了擺脫,你可以:

  • 或總是

    • 變化的服務器配置,其中不匹配您的首選分離器在您http_build_query()

    $arg_separator BTW請注意:

    只有第一個結果是好的

    不正確:使用&非常適合大多數情況,並且始終可以理解和正確處理。