PHP Regex路由函数与URLS匹配


PHP Regex Routing Function match URLS

我想写一个解析URL的路由器,比如我给它规则,然后我想有一个基于名称的数组。

======

编辑时间:

所以我确实稍微重写了一下代码可以在此处找到新代码:http://pastebin.com/Ver601FF

结果如下:http://img824.imageshack.us/i/phpprob.png/

我现在不知道如何根据数组中的正则表达式匹配url值,该数组具有第二个路由参数所具有的索引。

==============================编辑停止==================最后我想要一个数组:

$request['controller']
$request['action']

作为基本的$request参数,因为我一直都需要它们——因此这必须是我的标准/默认路线。

假设$pattern[2]正在发生,当我完成这个可怕的正则表达式时,我希望得到这个:

$request['controller']
$request['action'] = show
$request['id']
$request['name']

显然,所有内容都必须根据请求的url进行相应的填充。。。

它不知道是不是因为太晚了,但我不知道该如何匹配这些东西。

我需要拆分url吗?在我检查它是否与路线匹配之后?然后用他们各自的价值观来工作。

另一个我不知道解决方案的问题是,像这样的url

必须把之类的东西还给我

$request['controller']  = information
$request['action'] = show
$request['params'] = array(some, other, stuff)

我感谢任何形式的帮助,并希望有人能帮助我摆脱这个麻烦:(

事先非常感谢。

$regex  .= "[a-zA-Z]'/";

应该是

$regex  .= "[a-zA-Z]+'/";

第一个匹配一个字母。第二个匹配一个或多个。

此外,你的斜线在错误的位置([]/[]//[]/[](,你的比赛没有被锚定。

...
$regex .= "'/[a-zA-Z]+";
...
$regex .= "'/" . $route;
...
print_r(preg_grep("/^" . $patt . "'z/i", $url));
...

我自己找到了问题的答案——我希望它能帮助到其他人。但我甚至可能在稍微更新一下后在某个地方发表它。

查看解决方案:http://pastebin.com/FAbhneMZ

我现在要重写它,并从中产生一个合适的类,如果有人认为这个小路由器中的逻辑可以改进,请告诉我!

所有最好的人。

编辑更改了链接,因为那个版本仍然有缺陷,不好,这是我使用的最终解决方案,经过两天的测试,我认为它正按照我需要的方式工作。希望它能帮助其他人!