菜鸟入门系列 - PATHINFO的使用
时间:2009-04-21
来源:互联网
首先声明,大虾么就不用看了,我只是在编写自己的一些代码中的小小的收获拿来与大家分享而已。
PATHINFO的使用,相信大家如果用过thinkphp就会被它的URL结构所吸引。
不错,这就是PATHINFO所发挥的作用。
例如x.php?page=1可以变成x.php/page/1
对于SEO来说,PATHINFO可以消灭类似于?的东西,虽然google说这样做没有必要。
此外对于用户体验的提升也有帮助。
PATHINFO的使用要注意啥?
从SEO角度,就是要消灭重复的内容。比如,假设 x.php/1可以访问、x.php/1/也可以访问,这样就不利于搜索引擎的收录。
现在就开始编码。
首先写一个route.php,用于储存URL的配置信息
[php]
return array(
'page'=>array(
'page'=>'/^\/([0-9]+)\/[0-9]+$/',
'catid'=>'/\/[0-9]+\/([0-9]+)$/',
),
);
[/php]
嘿,这样的风格也是从thinkphp学来的。
可能需要一点正则表达的基础,不过上面的正则表达写的不难,很容易理解。
数组的key最后对应$_GET的KEY
正则表达里的match的值最后成为$_GET里的$value
然后写一个处理函数,这里要注意$_SERVER['PATH_INFO']的运用
这个变量默认为pathinfo的内容,比如x.php/page/1的$_SERVER['PATH_INFO']就是/page/1
[php]
function routeProcess($name){
//如果存在PATHINFO
if (isset($_SERVER['PATH_INFO'])){
//载入配置数组
$routeConf = include 'route.php';
//用于统计是否每一个正则是否都正确匹配
$count=0;
foreach ($routeConf[$name] as $key=>$value){
$match = array();
$count++;
if(preg_match($value,$_SERVER['PATH_INFO'],$match)>0){
$_GET[$key]=$match[1];
$count--;
continue;
}
}
if($count!=0){
return false;
}
else {
return true;
}
}
else {
return false;
}
}
[/php]
最后我们来调用下这个函数,假设我们的脚本是index.php
访问地址是 index.php/11/2
var_dump(routeProcess('page'));
var_dump($_GET);
显示如下
boolean truearray 'page' => string '11' (length=2) 'catid' => string '2' (length=1) PS:在xdebug下看,routeProcess函数用了0.3ms 希望大家多多批评,不吝啬你们的板砖。(最近在写自己的小框架,这些代码全部来源于此)
PATHINFO的使用,相信大家如果用过thinkphp就会被它的URL结构所吸引。
不错,这就是PATHINFO所发挥的作用。
例如x.php?page=1可以变成x.php/page/1
对于SEO来说,PATHINFO可以消灭类似于?的东西,虽然google说这样做没有必要。
此外对于用户体验的提升也有帮助。
PATHINFO的使用要注意啥?
从SEO角度,就是要消灭重复的内容。比如,假设 x.php/1可以访问、x.php/1/也可以访问,这样就不利于搜索引擎的收录。
现在就开始编码。
首先写一个route.php,用于储存URL的配置信息
[php]
return array(
'page'=>array(
'page'=>'/^\/([0-9]+)\/[0-9]+$/',
'catid'=>'/\/[0-9]+\/([0-9]+)$/',
),
);
[/php]
嘿,这样的风格也是从thinkphp学来的。
可能需要一点正则表达的基础,不过上面的正则表达写的不难,很容易理解。
数组的key最后对应$_GET的KEY
正则表达里的match的值最后成为$_GET里的$value
然后写一个处理函数,这里要注意$_SERVER['PATH_INFO']的运用
这个变量默认为pathinfo的内容,比如x.php/page/1的$_SERVER['PATH_INFO']就是/page/1
[php]
function routeProcess($name){
//如果存在PATHINFO
if (isset($_SERVER['PATH_INFO'])){
//载入配置数组
$routeConf = include 'route.php';
//用于统计是否每一个正则是否都正确匹配
$count=0;
foreach ($routeConf[$name] as $key=>$value){
$match = array();
$count++;
if(preg_match($value,$_SERVER['PATH_INFO'],$match)>0){
$_GET[$key]=$match[1];
$count--;
continue;
}
}
if($count!=0){
return false;
}
else {
return true;
}
}
else {
return false;
}
}
[/php]
最后我们来调用下这个函数,假设我们的脚本是index.php
访问地址是 index.php/11/2
var_dump(routeProcess('page'));
var_dump($_GET);
显示如下
boolean truearray 'page' => string '11' (length=2) 'catid' => string '2' (length=1) PS:在xdebug下看,routeProcess函数用了0.3ms 希望大家多多批评,不吝啬你们的板砖。(最近在写自己的小框架,这些代码全部来源于此)
作者: microwind 发布时间: 2009-04-21
好文章 讲的很清楚
作者: jiang2798 发布时间: 2009-08-29
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28