WDPHP路径解析原理

widuu 2012-11-28 PHP技术 3,940 0 喜欢 (0)

路由的写法 一判断
[php]
m=admin&a=admin
$_GET["m"]=!empty($_GET['m'])?$_GET['m']:index;
$_GET["a"]=!empty($_GET['a'])?$_GET['a']:index;

if($_SERVER["QUERY_STRING"]){ //$_SERVER["QUERY_STRING"]获取?以后的值
$m=$_GET['m']; 获取m得方法
unset($_GET['m']);
$a=$_GET['a']; 获取a得方法
unset($_GET['a']);
$query=http_bulid_query($_GET); //重组url 获取 a=admin后边的值 组成s=&2=q
$uri=$_SERVER['SCRIPT_NAME']."/{$m}/{$a}/".pre_replace(arrary("&","="), "/", $query);
header("Location:".$url);
}
[/php]
这样就能输出pathinfo的模式
[php]
if(issset($_SERVER['PATH_INFO'])){
$pathinfo=explode('/',trim($_SERVER['PATH_INFO'],"/")); //分割pathingo成为数组

//获取action
$_GET['m']=(!empty($pathinfo[0])?$pathinfo[0]:'index');
//将数组的单元移除数组

array_shift($pathinfo);
$_GET['a']=(!empty($pathinfo[0])?$pathinfo[0]:'index');

for($i=0; $i<count($pathinfo); $i+=2){ //每次加2 计算/$_GET['m']/$_GET['a'] 所以每次加2
$_GET[$pathinfo[$i]]=$pathinfo[$i+1];
}
}
[/php]
路由解析类就是这样写成的 完整的是
[php]
<?php
class Router{
/*
*URL专为PATHINFO格式
*/
static function praseurl(){
if(isset($_SERVER['PATH_INFO'])){
//获取pathinfo
$pathinfo=explode('/',trim($_SERVER['PATH_INFO'],"/"));

//获取action
$_GET['m']=(!empty($pathinfo[0])?$pathinfo[0]:'index');

//将数组的单元移除数组

array_shift($pathinfo);

$_GET['a']=(!empty($pathinfo[0])?$pathinfo[0]:'index');

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);
}
}
}
}
[/php]
欢迎转载,转载请注明来自微度网络-网络技术中心http://www.widuu.com

转载请注明来自微度网络,本文标题:《WDPHP路径解析原理》

喜欢 0 发布评论
Top