Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.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 http\u build\u查询参数?_Php_Get - Fatal编程技术网

Php http\u build\u查询参数?

Php http\u build\u查询参数?,php,get,Php,Get,是否有人知道如何进行http\u build\u查询添加一个 现在我正在添加index.php?到我所有的链接。我有理由不想要这个?硬编码到链接中。如果http\u build\u query()不解析URL,所以它不知道将返回的字符串追加到哪里,那么如果http\u build\u query()只添加它,那将是一个巨大的帮助。http\u build\u query()。您可以将?附加到URL(如果它还没有),然后将http\u build\u query()的结果附加到该URL 例如: $

是否有人知道如何进行
http\u build\u查询
添加一个

现在我正在添加index.php?到我所有的链接。我有理由不想要这个?硬编码到链接中。如果http\u build\u query()不解析URL,所以它不知道将返回的字符串追加到哪里,那么如果http\u build\u query()只添加它,那将是一个巨大的帮助。

http\u build\u query()。您可以将
附加到URL(如果它还没有),然后将
http\u build\u query()
的结果附加到该URL

例如:

$params = http_build_query(...);
if (strrpos($url, '?') !== strlen($url) - 1) {
    // if the value in $url does not end with a ?, append one
    $url .= '?';
}
$url .= $params;

如果
$url
包含要附加查询字符串的部分,并且
$q
http\u build\u查询的结果,则一行代码将是:

$url2 = strpos($url, '?')?$url.'&'.$q:$url.'?'.$q;
当然,对于这种一般情况,假设$url是有效的,并且对现有查询字符串url进行编码

一些测试代码:

$url = 'http://google.com';
$params = array('q'=>'something', 'q2'=>'something else');
$q = http_build_query($params);
$url2 = strpos($url, '?')?$url.'&'.$q:$url.'?'.$q;
echo 'Original url: ', $url, PHP_EOL, 'Final url: ', $url2, PHP_EOL;
$url = 'http://google.com/?extra=som';
$url2 = strpos($url, '?')?$url.'&'.$q:$url.'?'.$q;
echo 'Original url: ', $url, PHP_EOL, 'Final url: ', $url2, PHP_EOL;
以及输出:

Original url: http://google.com
Final url: http://google.com?q=something&q2=something+else
Original url: http://google.com/?extra=som
Final url: http://google.com/?extra=som&q=something&q2=something+else


写一个简短的函数来实现它。我需要做一个IF?存在http_build_query(),如果没有前置?。帮助?:)@用户1837671,添加了示例。
<?php 
$parse_url = parse_url($url);
$url2 = $parse_url['scheme'] . '://' . $parse_url['host'] . $parse_url['path'] . '?' . ($parse_url['query'] ? $parse_url['query'] . '&' : '') . http_build_query($params);

?>