打造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/3中router为路由目录,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));
?>