【发布时间】:2013-05-27 23:55:44
【问题描述】:
我找到了一些用于剥离查询字符串并向其添加新值的代码,但我希望能够使用一组选项来执行此操作。有人可以帮我修改这段代码吗?
当前代码:
function add_querystring_var($url, $key, $value) {
$url = preg_replace('/(.*)(\?|&)' . $key . '=[^&]+?(&)(.*)/i', '$1$2$4', $url . '&');
$url = substr($url, 0, -1);
$value = $value ? "=".urlencode($value) : '';
if (strpos($url, '?') === false)
return ($url . '?' . $key . $value);
else
return ($url . '&' . $key . $value);
}
我希望它为给定的每个键和值执行一次 foreach,然后重建新的 url。
示例:add_querystring_var(curPageURL(), array("order","sort"), array("swn","DESC"))
所以我想要下面的 URL http://www.example.com/students 当通过上面的例子时会返回 http://www.example.com/students?order=swn&sort=DESC
有人知道我该怎么做吗?我是 PHP 领域的新手。 :)
更新: 我忘了提到有时 url 中可能有其他查询,所以我希望它替换我输入到数组中的那些。
示例 1:http://www.example.com/students?page=2 需要转换为 http://www.example.com/students?page=2&order=swn&sort=DESC
示例 2:http://www.example.com/students?page=2&order=name&sort=ASC 需要转换为 http://www.example.com/students?page=2&order=swn&sort=DESC
【问题讨论】:
-
为什么不直接使用内置的
http_build_query()函数呢? -
@Barmar 我之前刚发现,但不知道在这种情况下如何使用它?有什么建议吗?
标签: php function foreach preg-replace