2010-02-07 109 views
2

我有一个匹配URI的正则表达式。例如,PHP:如何将正则表达式转换为示例匹配?

preg_match("/^my\/uri\//i", "my/uri/whatever"); 

我使用路由,用于exmample“http://www.mywebsite.com/my/uri/page.html”将匹配上述(与协议/主机当然移除)。

有什么方法可以将正则表达式评估为最匹配的最一般的URI吗?例如,

“我/ URI /”

+0

你只是想让你当前的正则表达式匹配''my/uri''和''my/uri/*“'吗? – 2010-02-07 09:14:36

+1

多么有趣的问题。处理像'/\w\b.+\b\s/'这样的东西(一个解决方案:'a')会相当困难。 – 2010-02-07 09:17:45

+0

我想反编译最正式的正则表达式 – Petah 2010-02-07 09:35:20

回答

1

我不明白你真正想要什么。

此代码可能是你需要的东西:

$general_uri = 'my/uri/'; 
$regex = '/^' . preg_quote($general_uri) . '/i'; 

如果你想在上面的代码的反向:

$regex = '/^my\/uri\//i'; 
$general_uri = str_replace('\\', '', preg_replace('/^\/\^(.*)\/i?$/', '$1', $regex)); 

但是上面的代码将无法在复杂的正则表达式工作。

+0

我猜这将用于简单的正则表达式。谢谢 – Petah 2010-02-09 09:36:29

0

也许你可以告诉大家,带领您进入这个死胡同有人可以给一份局势扭转原来的问题。

我为自己做了一个路由算法,我只是在'/'上使用和爆炸,它运行得非常好,像MagentoZend Framework这样做,注册路径控制器或路由器并链接它们。

也许您的原始问题可以解决,而无需使用PHP编写正则表达式引擎。