使用匹配模式重写新模式

时间:2013-09-26 03:39:23

标签: php

基本上,我想从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,因为我尝试制作路由系统,上面只是我在插入实际引擎之前测试的示例代码。

1 个答案:

答案 0 :(得分:0)

这会更容易吗?

preg_replace("/news.php\?id=(\d+)/","news/$1","news.php?id=24")