给定一个url和一个查询字符串,我如何获得由查询字符串和url组合得到的url?
我正在寻找类似于.htaccess的qsa
的功能。我意识到这对于完全手工实现来说是相当微不足道的,但是有没有内置的函数来处理查询字符串,可以简化或完全解决这个问题?
示例输入/结果集:
Url="http://www.example.com/index.php/page?a=1"
QS ="?b=2"
Result="http://www.example.com/index.php/page?a=1&b=2"
Url="page.php"
QS ="?b=2"
Result="page.php?b=2"
6条答案
按热度按时间0ve6wy6x1#
不使用PECL扩展,也不是大量复制和粘贴函数的东西怎么样?它仍然有点复杂,因为您要将两个查询字符串拼接在一起,并且不希望使用
$old .= $new;
这样的方式我们将使用parse_url从所需的url中提取查询字符串,使用parse_str解析要连接的查询字符串,使用array_merge将它们连接在一起,使用http_build_query创建新的组合字符串。
bjp0bcyl2#
您可以使用以下命令从url获取查询字符串部分:
然后正常地将其附加到URL。
如果你想在查询字符串中指定你自己的自定义变量,看看:
http_build_query
von4xj4u3#
这是一系列从WordPress“框架”中提取的函数,可以做到这一点,但这可能太多了:
add_query_arg()
stripslashes_deep()
urlencode_deep()
e0uiprwp4#
没有内置的函数可以做到这一点。但是,您可以从http PECL扩展中使用此函数,
http://usphp.com/manual/en/function.http-build-url.php
比如说
3okqufwl5#
如果URL冲突会发生什么?如果两个url都在querystring中包含
b=
组件?你需要决定哪一个占主导地位。这里有一段代码可以完成你想要的任务,将每个字符串解析为一个url,然后提取
query
url部分并将它们重新组合在一起。0h4hbjxa6#
这里是另一个函数来合并现有的URL参数