基本上,我想從URL模式映射到另一個URL模式。例如:使用匹配的模式重寫一個新的模式
news.php?id=(\d+) -> news/$1
我設法用一個簡單的循環完成以下操作。
$url = "news.php?id=24";
$pattern = "/news.php\?id=(\d+)/";
$rewrite = "news/$1";
if (preg_match($pattern, $url, $match))
{
for($i = 1; $i < count($match); $i++) {
$rewrite = str_replace("\${$i}", $match[$i], $rewrite);
}
}
var_dump($rewrite);
// output: news/24
我不知道是否有更好的方法或本地PHP函數可以做一個類似的事情嗎?
注意:請不要使用.htaccess,因爲我試圖建立一個路由系統,上面只是我插入實際引擎之前測試的示例代碼。
自從我做了這些事情之後已經有一段時間了,但是preg_replace()不適合嗎? – andyc
如何實現沒有'.htaccess'的路由器??!你可能希望你'.htaccess'在沒有繁重條件的情況下是純粹的。 – Yang
而且,只有擁有「前端控制器」時,路由器纔有意義。 – Yang