我已经找到了关于Catching ids and its values from a string with preg_match的问题,而标题正是我所需要的。 但是 ,我不确定如何将其适应我的路由系统。我不确定如何将其转换为字符串中间的ID。
我有以下代码来查看是否匹配:
if ( preg_match( $url, $route ) ) {
echo 'matched';
}
我也有这段代码,它在实际用于查看URL是否应包含ID之前准备了路由。如果应该(通过使用{id}
占位符),则需要用正则表达式替换它,以便它可以匹配其中具有ID的URL。
$route = str_replace( '{id}', '[A-Za-z0-9]', $route );
$route = '~^' . $route . '~';
这是给出的URL:
'/admin/posts/edit/1/'
这是它应该成功匹配的路由:
'~^/admin/posts/edit/[A-Za-z0-9]/~'
现在,它似乎不起作用,很明显我在这里犯了某种错误,但是我不知道在哪里,我的正则表达式搜索没有对我产生任何明显的影响。
我该如何匹配它?