我正在编写路由类,需要帮助。我需要解析 $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]; 


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!