PHPでの名前付きパラメータを用いたルーティング
URLを処理する正規表現の一つを 見てみましょう:
<?php
if (preg_match('#^/page/([a-z0-9_-]+)$#', $url, $params)) {
$page = include 'view/page/show.php';
}
?>
この場合、パラメータは キャプチャグループに入ります。 その後、番号によってパラメータの値を キャプチャグループから取り出します:
<?php
$slug = $params[1];
?>
これは実際にはあまり美しくありません。 特にパラメータが複数ある場合にそうです。 番号ではなく名前を持つパラメータに する方が良いアイデアです。 そのために、正規表現で名前付き キャプチャグループを使用しましょう:
<?php
if (preg_match('#^/page/(?<slug>[a-z0-9_-]+)$#', $url, $params)) {
$page = include 'view/page/show.php';
}
?>
その場合、名前によってパラメータの値を 取得できるようになります:
<?php
$slug = $params['slug'];
?>
あなたのエンジンのルートのパラメータを 名前付きのものに変更してください。