一个改变url格式的类

class Prourl {
        /**
         * URL路由,转为PATHINFO的格式
         */ 
        static function parseUrl(){
            if (isset($_SERVER['PATH_INFO'])){
                       //获取 pathinfo
                $pathinfo = explode('/', trim($_SERVER['PATH_INFO'], "/"));  //使用 / 将当前路径分割为数组
            
                       // 获取 control
                       $_GET['m'] = (!empty($pathinfo[0]) ? $pathinfo[0] : 'index');   //如果第一个参数不为空则为第一个,否则跳到index

                       array_shift($pathinfo); //将数组开头的单元移出数组  array_shift()函数删除数组中的第一个元素,并返回被删除元素的值。
                      
                       // 获取 action
                       $_GET['a'] = (!empty($pathinfo[0]) ? $pathinfo[0] : 'index');
                array_shift($pathinfo); //再将将数组开头的单元移出数组 

                for($i=0; $i<count($pathinfo); $i+=2){
                    $_GET[$pathinfo[$i]]=$pathinfo[$i+1];
                }
            
            }else{    
                $_GET["m"]= (!empty($_GET['m']) ? $_GET['m']: 'index');    //默认是index模块
                $_GET["a"]= (!empty($_GET['a']) ? $_GET['a'] : 'index');   //默认是index动作
    
                if($_SERVER["QUERY_STRING"]){
                    $m=$_GET["m"];
                    unset($_GET["m"]);  //去除数组中的m
                    $a=$_GET["a"];
                    unset($_GET["a"]);  //去除数组中的a
                    $query=http_build_query($_GET);   //形成0=foo&1=bar&2=baz&3=boom&cow=milk格式
                    //组成新的URL
                    $url=$_SERVER["SCRIPT_NAME"]."/{$m}/{$a}/".str_replace(array("&","="), "/", $query);
                    header("Location:".$url);
                }    
            }
        }
    }

复习几个常见的函数  

1. explode(separator,string,limit)       separator 用什么分割   string  需要分割的字符串  
返回的是一个数组
2.array_shift(array)   删除数组的第一个元素,并且返回被删的元素
3.http_build_query      生成urlencode格式
 
这种类的好处就是可以有利于seo,使爬虫更加容易识别。
posted @ 2014-03-13 16:54  Bl4ck_Code  阅读(266)  评论(0编辑  收藏  举报