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,使爬蟲更加容易識別。