php移除url中的某个或者多个指定的参数

在项目开发过程中,有时候需要给url添加某些参数方便追踪、分享等,但是有时候也需要清理链接里面的某些参数以免影响相关的业务逻辑。

今天写了一个函数方法专门来处理这个问题,主要利用了parse_str和parse_url函数:

/**
 * 移除url的某个参数
 * @param $url
 * @param $keys array|string 需要移除的一个或者多个参数
 * @return array|false|int|string|null
 * @example $url = 'https://wei1.top?a=1&b=2&user=cccc&x=ad';
 *          $newUrl = remove_query_var($url,'user');
 *          echo $newUrl;//https://wei1.top?a=1&b=2&x=ad
 */
function remove_query_var($url, $keys)
{
    $url = parse_url($url);
    if (!empty($url['query'])) {
        parse_str($url['query'], $arr);
        if (is_array($keys)){
            foreach ($keys as $key){
                if (isset($arr[$key])) {
                    unset($arr[$key]);
                } 
            }
        }else{
            if (isset($arr[$keys])) {
                unset($arr[$keys]);
            }
        }
        $url = $url['scheme'] . '://' . $url['host'] . $url['path'] . '?' . http_build_params($arr);        
    }
    return $url;
}



评论/留言