我需要一些基于PHP的路径解析器的帮助,我正在尝试创建一个路径路由器,它从给定的字符串中获取参数并返回包含结果的键控数组。我可以在一个完整的循环中完成它,每个区域被分解并单独测试但我觉得应该有一种方法来做一个信号正则表达式然后循环结果
users/<id:(\d+)>/ = users/1 || users/42 != users/bob
returns args['id'] = 1 || args['id'] = 42
user/register
args = []
name/<fname:([a-zA-Z]{1,10})>/<lname:([a-zA-Z]{1,10})> = name/bob/smith || name/jordan/freeman
args['fname'] = bob || args['fname'] = jordan
args['lname'] = smith || args['lname'] = freeman
答案 0 :(得分:1)
命名捕获是我正在寻找的,只需要转换我的标记或重做模式。 http://www.regular-expressions.info/named.html
以下是我可以提供的,IDK是否可以帮助其他人?
$str = 'user/1/';
$reg = "user\/(?P<ID>\d+)\/";
var_dump(testPath($str, $reg));
$str = 'user/bob/smith/';
$reg = "user\/(?P<fname>[a-zA-Z]+)\/(?P<lname>[a-zA-Z]+)\/";
var_dump(testPath($str, $reg));
function testURL($url, $reg){
if(preg_match("/^$reg$/", $url, $matches)){
return $matches;
}else{
return null;
}
}