Laravel 4中爆炸路线的正则表达式

时间:2014-02-14 11:16:23

标签: php regex laravel-4

如何爆破laravel

Route::getCurrentRoute()->getActionName() // IndexController@getRegister

进入数组:名称空间,控制器,方法,操作

我创建了expr:

(.*)\\(.*)Controller@(get|post|put|delete|patch)(.*)

但它并不适用于所有路线

Admin\IndexController@getIndex
Admin\IndexController@postIndex
Other\Namespace\Admin\IndexController@putIndex
Admin\IndexController@deleteGetAjaxSuper
Admin\IndexController@patchIndex
IndexController@getRegister
Other_IndexController@getRegister
IndexController@getRegister
IndexController@getRegister

http://regexr.com?389rh 它不适用于最后4项。

2 个答案:

答案 0 :(得分:0)

它与最后4项不匹配,因为项目在控制器之前不包含\。您的正则表达式需要他们拥有它,因此与它不匹配。答案是通过使用?使初始斜杠可选? (= 0或1次出现),如下:

(.*)\\?(.*)Controller@(get|post|put|delete|patch)(.*)

在旁注中,您确定控制器没有具体名称吗?即。一个名为“Controller”的控制器也会匹配你的正则表达式。要禁止(并且只允许[某些]控制器),您可以将第二个。*更改为。+(因此从0或更多匹配更改为1个或多个匹配)。像这样:

(.*)\\?(.+)Controller@(get|post|put|delete|patch)(.*)

你的方法也是一样的(get | post | etc。):

(.*)\\?(.+)Controller@(get|post|put|delete|patch)(.+)

答案 1 :(得分:0)

假设您在控制器之前没有任何空间

\S+Controller@(get|post|put|delete|patch)(.*)

使用.*代替\S+也可以。