我试图移动我的路由器以使用正则表达式,但努力获得以下权利。
我使用一个简单的模块(控制器)/动作/参数URI,但参数显然是可选的,可以是单个或多个参数,具体取决于方法。
示例模式:/ pages / view 示例URI:/ pages / view / about_us / mobile
使用preg_match,我想将URI与模式匹配,即使它只是部分匹配但想捕获并使用about_us / mobile(或者它可能是什么)。
我试图让我的调度程序尽可能通用,并希望避免我必须为每个参数添加路由的情况,我将传递给给定的操作/方法。如果我可以捕获about_us / mobile,我可以使用explode使它成为一个数组,并将其传递给给定的控制器方法。
我认为我需要改变我的模式才能这样做,但我不知道该怎么做?有什么想法吗?
答案 0 :(得分:0)
尝试: #^/([^/]+)/?([^/]+)?/?(.*)?$#
第一个匹配组将是您的控制器,第二个匹配组将是可选操作,第三个匹配组将是可选参数(字符串末尾的所有内容)。
<强>解释强>
#^ -- delimiter and beginning of string
/([^/]+) -- / followed by a match of everything until the next /
/?([^/]+)? -- optional / optionally followed by a match of everything until the next /
/?(.*)? -- optional / optionally followed by anything else
$# -- end of string and delimiter
注意:我使用#
作为分隔符,因此您无需每隔/
转义一次。