用PHP和Regex解析路径

时间:2014-12-04 05:22:41

标签: php regex url-routing

我需要一些基于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

1 个答案:

答案 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;
    }
}