笔记:从url中分离query数据

2007年6月7日 由 飞扬轻狂 留言 »

从url中分离query数据
-by fallseir

$req_url=$_SERVER["REQUEST_URI"]; // 获取当前url
list($req_path,$req_queries)=split_url($req_url); // 分离出地址和参数
$value=$req_queries["arg"]; //获取指定参数的值
$req_queries["page"]=2;//设置参数的值
unset($req_queries["arg"]);//清除指定参数

$new_url=join_url($req_path,$req_queries); // 重新组合成完整的地址

function split_url($url){
    $req_path=$url;
    $req_queries=array();

    if(strpos($url,"?")!==false){
        list($req_path,$req_query)=split("\?",$url,2);
        foreach(split("&",$req_query) as $query){
            list($q,$v)=split("=",$query,2);
            if(array_key_exists($q,$req_queries)){
                if(is_array($req_queries[$q])){
                    $req_queries[$q][]=$v;
                }else{
                    $req_queries[$q]=array($req_queries[$q],$v);
                }
            }else{
                $req_queries[$q]=$v;
            }
        }
    }
    return array($req_path,$req_queries);
}
function join_url($path,$queries=false){
    $url=$path;
    if($queries&&is_array($queries)&&(count($queries)>0)){
        $qs=array();
        foreach($queries as $k=>$v){
            if(is_array($v)){
                array_unique($v);
                foreach($v as $t){
                    $qs[]=sprintf("%s=%s",$k,$t);
                }
            }else{
                $qs[]=sprintf("%s=%s",$k,$v);
            }
        }
        if(count($qs)>0){
            $url.="?".join("&",$qs);
        }
    }
    return $url;
}
广告位

留下评论