2010-02-07 110 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編寫正則表達式引擎。