2016-07-16 4 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

Как и другие ответы, уже предлагаемые, ваш вопрос исходит из аргумента $arg_separator в http_build_query().

Точнее, так как вы не заполнит его, функция использует значение по умолчанию , который зависит от конфигурации сервера, как заявлено http://php.net/manual/en/function.http-build-query.php:

arg_separator
arg_separator.output используется для отдельные аргументы, но можно переопределить, указав этот параметр.

И после arg_separator.output ссылки вы получаете:

arg_separator.output струнного
Сепаратор используется в PHP генерируется URL, для разделения аргументов.

Таким образом, кажется, что ваши разные серверы имеют разные конфигурации, следовательно, разные результаты.
Чтобы избавиться от того, что вы можете либо:

  • изменение конфигурации сервера, на котором он не соответствует предпочтительный разделитель
  • или всегда включают $arg_separator в вашем http_build_query()

BTW, пожалуйста, обратите внимание:

только первый результат хороший

не соответствует действительности: использование & хорошо подходит для большинства ситуаций и всегда понимается и правильно обрабатывается.

Смежные вопросы