PHP路由

打造php路由器

1.url重写

apache服务器:

目录下放置.htaccess文件,内容类似下面这样:

<ifmodulemod_rewrite.c>
RewriteEngineOn
RewriteRule^(.*)$ index.php?$1 [L]
</ifmodule>



RewriteRule的语法:RewriteRule正则表达式 替换后的内容(这里用$1$2来获得正则匹配的内容)[L]的意义为,匹配改写后不再向下继续匹配(可以写多个Rule

2.几个变量

为了获得请求的字符串/*例如localhost/router/id/3router为路由目录,id/3为请求串*/,先来看看下面几个变量的值://index.php/opt/lampp/htdocs/router/

<?php
echo$_SERVER['REQUEST_URI'],$_SERVER['DOCUMENT_ROOT'],__FILE__;
?>


得到结果:

/router/id/3/opt/lampp/htdocs /opt/lampp/htdocs/router/index.php//地址为localhost/router/id/3

那么我们需要的/id/3需要去掉的就是$_SERVER['REQUEST_URI']里面的/router

3.字符串处理

<?php
//echo$_SERVER['REQUEST_URI'],$_SERVER['DOCUMENT_ROOT'],__FILE__;
preg_match('/(.*)\/.*\.php$/',__FILE__,$dir);
$remove=str_replace($_SERVER['DOCUMENT_ROOT'],'',$dir[1]);
$query=str_replace($remove,'',$_SERVER['REQUEST_URI']);
print_r($query);
?>


这样我们就得到了结果:

/id/3

4.参数分割

使用explode函数分割出各参数,这样你就可以继续解析到页面或者View

<?php
//echo$_SERVER['REQUEST_URI'],$_SERVER['DOCUMENT_ROOT'],__FILE__;
preg_match('/(.*)\/.*\.php$/',__FILE__,$dir);
$remove=str_replace($_SERVER['DOCUMENT_ROOT'],'',$dir[1]);
$query=str_replace($remove,'',$_SERVER['REQUEST_URI']);
print_r(explode("/",$query));
?> 


阅读更多
个人分类: 后端
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

PHP路由

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭