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);
?>