我想用真正的匹配使用正則表達式做一個路由器,但我總是堅持如何加載路由。正則表達式真正的匹配行爲
如果我有一個像
- /路線:任何
- /博客/:任何
- /博客/分類/:任何
第一條路線將永遠成真,而不是使用第二路或第三路。
$data = array();
foreach($this->routes as $route => $rData) {
if(strpos($route, ':') !== false) {
foreach($this->tokens as $token => $value) {
$route = str_replace($token, $value, $route);
}
}
if(preg_match('#^'.$route.'$#', $url, $matches)) {
$data['params'] = array_slice($matches, 1);
$data = array_merge($rData, $data);
break;
}
}
路線:
$routes = array(
'/:any' => callback,
'/blog/:any' => callback,
'/blog/category/:any' => callback
);
令牌:
$tokens = array(
':num' => '([0-9]+)',
':any' => '(.+)'
);
網址:
$url = $_SERVER['QUERY_STRING'];
我該怎麼辦正則表達式/的preg_match才能得到正確的路由匹配?
顯示'$ this-> routes','$ this-> tokens'和'$ url'是如何被填充的,或者至少是所有這些變量的示例值來獲得更好的想法可能是有幫助的發生。 –
我認爲事情很簡單,但我也添加了這些。 – Filipe