php - 使用正则表达式匹配 Laravel 路由中的子字符串

标签 php regex laravel routes

我的网址是:www.foo.com/some-bar-slug-here/page

如果在上面显示的 slug 中找到字符串“bar”,我无法获得捕获路径:

Route::any('{myslug}/page/', array('as'=>'bar-page', 'uses'=>'Controllers\MyBar@index'))
     ->where('myslug','/bar/');

如果我使用正则表达式 [0-9A-Za-z\-]+ 它有效,但它不适用于 /bar/。有什么想法吗?

最佳答案

我使用 ^([0-9A-Za-z\-]+)?bar([0-9A-Za-z\-]+)?

>

因此更新后的路由代码如下所示:

Route::any('{myslug}/page/', array('as'=>'bar-page', 'uses'=>'Controllers\MyBar@index'))
 ->where('myslug','^([0-9A-Za-z\-]+)?bar([0-9A-Za-z\-]+)?');

奖励:为了使其不区分大小写,我这样做:^([0-9A-Za-z\-]+)?(?i)bar([0-9A-Za-z\- ]+)?

注意:如果您在路由文件中进一步使用此路由的副本,但要搜索不同的子字符串,那么您需要将 {myslug} 命名为不同的名称像 {myslug2},否则 Laravel 不会运行所有的路由。

关于php - 使用正则表达式匹配 Laravel 路由中的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27198019/

相关文章:

php - 如何在另一个类中创建一个类的实例

php - Composer global 要求 Laravel/Installer 不能在 Ubuntu 上运行

php - 如何在不重新索引的情况下将项目添加到 laravel 列表集合中?

php - 如何在TYPO3中实现带有自定义元素的页面模板?

php - 找不到具有 PHP 命名空间的类

javascript - 为表中的每一行创建mysql删除链接,使用ajax删除它并更新表列表

java - 正则表达式:匹配具有重复字符的排列,其中一个字符不能出现多次

python - 为什么使用 python 计算单词时条件会出错?

Java 正则表达式错误 - 后视组没有明显的最大长度

php - Laravel5.7 : Get sum() for current month using model returned in view