PHP 去掉url指定参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
/**
* 去掉URL中指定的参数, 删除无用参数
*
* @param array|string $paramNames 要移除的参数
* @param string $url 要处理的地址
*
* @return string
*/
function removeUrlParam($paramNames, $url)
{
if ( is_string($paramNames) ) {
$paramNames = array($paramNames);
}

if ( !$paramNames ) {
return $url;
}

$names = array();
if ( strpos($url, "?") !== false ) {
$urlInfo = explode("?", $url);
$baseUrl = $urlInfo[1];
parse_str($baseUrl, $names);
} else {
return $url;
}

foreach ($names as $name => $v) {
if ( in_array($name, $paramNames) ) {
unset($names[$name]);
}
}
return $urlInfo[0] . "?" . http_build_query($names);
}

// 测试
removeUrlParam('b', 'https://xxx.com?a=1&b=2');