我正在编写路由类,需要帮助。我需要解析 $controller 变量并将该字符串的一部分分配给另一个变量。以下是 $controller 的示例:
$controller = "admin/package/AdminClass::display"
//$path = "admin/package";
//$class = "AdminClass";
//$method = "display";
$controller = "AdminClass::display";
//$path = "";
//$class = "AdminClass";
//$method = "display";
$controller = "display"
//$path = "";
//$class = "";
//$method = "display";
我只需要这三种情况。是的,我可以编写很长的过程来处理这种情况,但我需要的是使用正则表达式和函数 preg_match_all 的简单解决方案
有什么建议吗?
请您参考如下方法:
下面的正则表达式应该为您完成这个,然后您可以将捕获的组保存到 $path
、$class
和 $method
.
(?:(.+)/)?(?:(.+)::)?(.+)
这是一个 Rubular: http://www.rubular.com/r/1vPIhwPUub
您的 PHP 代码可能如下所示:
$regex = '/(?:(.+)\/)?(?:(.+)::)?(.+)/';
preg_match($regex, $controller, $matches);
$path = $matches[1];
$class = $matches[2];
$method = $matches[3];