基本的に、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 の使用を提案しないでください。ルーティング システムを作成しようとしており、上記は実際のエンジンにプラグインする前にテストしたサンプル コードにすぎません。