Php 自定义路由器问题,匹配“/汽车/{make};及/cars/under-{under}quot;
这是我当前的路由匹配脚本,它工作得很好,但是现在我得到了一个Php 自定义路由器问题,匹配“/汽车/{make};及/cars/under-{under}quot;,php,Php,这是我当前的路由匹配脚本,它工作得很好,但是现在我得到了一个在-{under}下的路由,脚本正在崩溃 if (preg_match('/{([^}]*)}/', $route[$i], $match)) { $urlWithoutParameter = preg_replace('/{([^}]*)}/', '', $route[$i]); $value = str_replace($urlWithoutParameter, '', $url[$i]); $params[
在-{under}
下的路由,脚本正在崩溃
if (preg_match('/{([^}]*)}/', $route[$i], $match)) {
$urlWithoutParameter = preg_replace('/{([^}]*)}/', '', $route[$i]);
$value = str_replace($urlWithoutParameter, '', $url[$i]);
$params[$match[1]] = $value;
continue;
}
以下是我的路线:
Route::get('/cars/under-{under}', [' controller' => 'Controller::index']);
Route::get('/cars/{make}', [ 'controller' => 'Controller::index']);
因此,如果我转到localhost/used/cars/audi
,由于正则表达式匹配,第一条路线是匹配的,但是它不应该匹配,因为该路线包含-下的
我怎样才能解决这个问题
编辑
我试图研究Laravel是如何做到这一点的,但它似乎会为每条路线生成一个正则表达式,我不明白这是如何做到的,这是一个示例:
#^/website/(?p[^/]+)/legacy \-locations$#sD
这是路线:
website/{website?}/legacy locations