今天给我的 VgotFaster 框架增加了路由转换功能,特记录一下,写下方法中的核心部分。
下面是路由中的配置:
- $routes = array(
- 'readid/(\d+).html' => 'test/route/readid/$1'
- );
路由类中转换方法核心部分:
- preg_match_all("|^$exp$|",$uri,$export,PREG_SET_ORDER);
- if(isset($export[0]) and count($export[0]) > 1) {
- unset($export[0][0]); //卸载解释出的原值,preg_match_all [0][0] 为匹配的原值,之后为匹配出的值
- $replace = $replaceTo = array();
- foreach($export[0] as $key => $replaceVal) {
- $replace[] = '$'.$key; //$1
- $replaceTo[] = $replaceVal;
- }
- return $route = str_replace($replace,$replaceTo,$route);
- }
最主要是依靠 preg_match_all 进行正则匹配并且解出其中的值,然后使用 str_replace 对 $1、$2.. 进行替换。
就是这么简单。