PHP类 处理漂亮整洁的URL 例如 http://www.huiff.com/a
避免了用 txt.php?page=** 来传参数的不利,因为那样对搜索引擎不友好而用 / 来分隔参数,即美观,又便于搜索引擎抓取!例子:http://www.huiff.com/RequestPath.class.php/edit/trackbacks/page/2/flag/4 a
避免了用 txt.php?page=** 来传参数的不利,因为那样对搜索引擎不友好
而用 / 来分隔参数,即美观,又便于搜索引擎抓取!
例子:http://www.huiff.com/RequestPath.class.php/edit/trackbacks/page/2/flag/4
action 用 $url->__get('action'); 获得
type 用 $url->__get('type'); 获得
(以上两个是默认的)
其余参数,前面的是参数名,后面的是参数值
$url->__get('page') 的值是 2
url->__get('flag') 的值是 4
而用 / 来分隔参数,即美观,又便于搜索引擎抓取!
例子:http://www.huiff.com/RequestPath.class.php/edit/trackbacks/page/2/flag/4
action 用 $url->__get('action'); 获得
type 用 $url->__get('type'); 获得
(以上两个是默认的)
其余参数,前面的是参数名,后面的是参数值
$url->__get('page') 的值是 2
url->__get('flag') 的值是 4
<?php
class RequestPath{
private $parts=array(); //存储请求URL的所有部分
/********
函数名 :__construct()
函数功能 :构造函数负责实际路径的解析
e.g : http://域名/网页/动作/动作类型/参数1名称/参数1值/参数2名称/参数2值...
e.g : http://www.huiff.com/RequestPath.class.php/edit/trackbacks/page/2/flag/4
*********************************************************************************************/
public function __construct()
{
if(isset($_SERVER['PATH_INFO']))
{
$path= (substr($_SERVER['PATH_INFO'],-1) == '/') ? substr($_SERVER['PATH_INFO'],0,-1) :$_SERVER['PATH_INFO'];
}
else
{
$path= (substr($_SERVER['REQUEST_URI'],-1) == '/') ? substr($_SERVER['REQUEST_URI'],0,-1) : $_SERVER['REQUEST_URI'];
}
$bits = explode('/',substr($path,1));
$parsed['action'] = array_shift($bits); //将数组头部移出数组
$parsed[] = $parsed['action'];
$parsed['type'] = array_shift($bits); //将数组头部移出数组
$parsed[] = $parsed['type'];
$parts_size=sizeof($bits);
if($parts_size % 2 != 0)
{
$parts_size -=1;
}
for( $i = 0 ; $i < $parts_size ; $i += 2 )
{
$parsed[$bits[$i]] = $bits[$i+1];
$parsed[] = $bits[$i+1];
}
if(sizeof($bits) % 2 !=0)
{
$parsed[] = array_pop($bits);
}
$this->parts = $parsed;
}
/***********************************************************************************************
函数名 :__get __set __isset
函数功能 :以下函数分别为获取,设置,和测试路径元素植
参数$key :参数名称
***********************************************************************************************/
public function __get($key)
{
return $this->parts[$key];
}
public function __set($key , $value)
{
$this->parts[$key]=$value;
}
public function __isset($key)
{
return isset($this->parts[$key]);
}
}
//这里是运用
$url = new RequestPath();
echo "action = ".$url->__get('action')."
";
echo "type = ".$url->__get('type')."
";
echo "page = ".$url->__get('page')."
";
echo "index = ".$url->__get('index')."
";
echo "aa = ".$url->__get('aa')."
";
?>
- 上一篇:字符串转换成打散的单个字符组成的数组
- 下一篇:test
精彩图集
精彩文章






