我有一个匹配URI的正则表达式。例如,
preg_match("/^my\/uri\//i", "my/uri/whatever");
我用于路由,例如“http://www.mywebsite.com/my/uri/page.html”将匹配上述内容(当然已删除协议/主机)。
有没有办法将正则表达式计算成最匹配的常规URI?例如,
“我/ URI /”
答案 0 :(得分:1)
我不明白你真正想要的是什么。
此代码可能是您所需要的:
$general_uri = 'my/uri/';
$regex = '/^' . preg_quote($general_uri) . '/i';
如果您想要反向上述代码:
$regex = '/^my\/uri\//i';
$general_uri = str_replace('\\', '', preg_replace('/^\/\^(.*)\/i?$/', '$1', $regex));
但是上面的代码不适用于复杂的正则表达式。
答案 1 :(得分:0)
也许如果你能说出引导你进入这个死胡同的原始问题,那么有人可以对这种情况做出改变。
我已经做了一个路由算法,我只是在'/'上使用和爆炸它非常好用,像Magento或Zend Framework这样做,注册路径控制器或路由器和链接它们。
也许你的原始问题可以解决而无需用PHP编写正则表达式引擎。