2011-11-28 90 views
1

我需要以下內容,但我不知道如何使用正則表達式來執行此操作。PHP正則表達式 - 在斜槓之間獲取文本

第一個問題

從$ URI = '?/頁/子頁/瓦爾=喇嘛' 我想只提取 '/頁/子頁/';

問題二

的$ URI = '/頁/子頁/?瓦爾=喇嘛' 我想將它轉換爲 友好版本 '/頁/子頁/瓦爾-BLA /' ;現在我可以做到 '/ page-subpage-vars-bla /',但我想保留斜槓。

謝謝!

回答

2

第一個問題的解決方案:

preg_match("/(.*)\\/([^\\/]+)/", '/page/subpage/?vars=bla', $split); 
echo $split[1] . "/"; 

輸出:

/page/subpage/ 

問題二:

preg_match("/(.*)\\/([^\\/]+)/", '/page/subpage/?#[email protected]=bla', $split); 
echo $split[1] . "/" . str_replace("=", "-", $split[2]) . "/"; 

輸出:

/page/subpage/?#[email protected]/ 
+0

關於第一個問題..我需要的正則表達式,因爲它可以/頁/子頁/#BLA,/頁/子頁/ @血乳酸等 - 所有樣的字符〜'!@#$%^&*()_ + =。並沒有工作。不過謝謝! – Upper

+0

也是同樣的問題,我的第二個問題..它可以是'/ page/subpage /!@#$ vars = bla' – Upper

+1

更新的第一個解決方案,思考第二個問題。 – Niels

0

爲什麼不使用parse_url()

$uri = '/page/subpage/?vars=bla'; 
parse_url($uri); 

結果...

array 
    'path' => string '/page/subpage/' (length=14) 
    'query' => string 'vars=bla' (length=8) 
+0

函數「專門用於解析URL而不是URI」,但它起作用。可以肯定的是,你總是可以添加一個假計劃+主機:'$ url ='http://fake.org'。 $ uri;' – eillarra

+0

如果我有'/ page/subpage /!bla',它會返回相同的結果。所以不起作用... – Upper

+0

正確:此解決方案僅適用於符合[RFC 3986](http://tools.ietf.org/html/rfc3986)的URI。 – eillarra

相關問題