网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > PHP技巧
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.PHP的正则处理函数总结分析.
.最小化数据传输——在客户端存储.
.在UNIX平台上的Netscape Enterpr.
.PHP取得文件后缀.
.理解PHP中的MVC编程之控制器.
.Pear:HTTP_Upload简介.
.配置PHP使之能同时支持GIF和JPEG.
.不需要mod_rewrite直接使用php实.
.提取HTML标签.
.PHPUnit袖珍指南之自动测试.
.模拟SQLSERVER的两个函数:datea.
.PHP4与PHP3中一个不兼容问题的解.
.数据抽象层->ADODB入门基础.
.PHP实现简单线性回归之数学库的重.
.直接读取数据库信息的三种方法.
.PHP 中的 SimpleXML 处理.
.PHPUnit袖珍指南之命令行测试工具.
.彻底解决PHPMyAdmin中文UTF-8乱码.
.zend_db连接mysql(附完整代码).
.[GD]生成bmp格式的图片(imagebmp).

PHP友好URL的实现

发表日期:2008-12-16


下面的代码主要是伪静态的实现,搜索引擎喜欢

大家经常看到别的站的URL是这样的吧?
http://www.xxx.com/module/show/action/list/page/7
或者
http://xx.com/module/show/action/show/id/8.shtml 带扩展名的
或者
http://xx.com/module/show/action/show/id/8?word=ss&age=11
这样的吧
今天我就是公布下这种方法的实现,并独立出最简单的代码
函数如下,没封装成类,主要是没必要,用函数能方便些

<?php
/**
* 获得友好的URL访问
*
* @accesspublic
* @return array
*/
function getQueryString(){
$_SGETS = explode("/",substr($_SERVER['PATH_INFO'],1));
$_SLEN = count($_SGETS);
$_SGET = $_GET;
for($i=0;$i<$_SLEN;$i+=2){
if(!empty($_SGETS[$i]) && !empty($_SGETS[$i+1])) $_SGET[$_SGETS[$i]]=$_SGETS[$i+1];
}
$_SGET['m'] = !empty($_SGET['m']) && is_string($_SGET['m']) ? trim($_SGET['m']).'Action' : 'indexAction';
$_SGET['a'] = !empty($_SGET['a']) && is_string($_SGET['a']) ? trim($_SGET['a']) : 'run';
return $_SGET;
}
/**
* 生成链接URL
*
* @accesspublic
* @param array $arr
* @return string
*/
function setUrl($arr){
global $Global;
$queryString='';
if($Global['urlmode']==2){
foreach($arr as $k=> $v){
$queryString.=$k.'/'.$v.'/';
}
}
$queryString.=$Global['urlsuffix'];
return $queryString;
}
?>
使用很简单
<?php
$_GET= getQueryString();
?>
但是这样还不行,这样只能实现
http://www.xxx.com/index.php/module/show/action/list/page/7 这样的
中间多了个index.php 为此我们要把他去掉,只好重写
但是有些文件 又不希望这样,比如 样式 图片,那就放条件里
建立一个 .htaccess文件

RewriteEngine on
RewriteCond $1 !^(index\.php|css|pics|themes|js|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [L]
现在OK了,赶快去测试吧

<?php
$_GET= getQueryString();
print_r($_GET);
?>

上一篇:PHP负载均衡指南 人气:46
下一篇:PHP合并数组array_merge函数运算符加号与的区别 人气:73
浏览全部PHP的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐