可选的路由php模式


Optional route php patterns

这是我的代码:

$url = '/'; //or
$url = '/slug'; //or
$url = '/slug/slug1'; //or
$url = '/slug/slug1/slug2'; //or
$url = '/slug/slug1/slug2/slug3';
$patterns = ???
preg_match_all($pattern, $url, $parts, PREG_OFFSET_CAPTURE);

满足上面所有url的模式是什么?有人能帮帮我吗?

此模式满足所有条件:

$pattern = "!^/(slug|slug(/slug'd+)+)?$!";

但是当然,你的问题应该是"满足上面所有的url而不是其他的",因为"/"也匹配它们…

为什么要使用模式?如果你想要的只是url的一部分,一个更简单的解决方案是…

$parts = explode('/', trim($url, ' /'));

(注意,我trim的前后空格和/(正斜杠),这样我就不会得到一个空字符串""作为$parts数组的第一个或最后一个元素——除非$url只是"/"。)