2012-05-21 152 views
-2

獲取查詢字符串參數我需要一個正則表達式的字符串來提取不同類型的網址,例如參數使用$_SERVER["REQUEST_URI"]PHP正則表達式 - 從重寫URL

串1「/新聞/頁/ 4」或字符串2:「/新聞/每週/頁/ 4」

我需要提取字符串沒有最後/page/[ID],我的意思是隻有/news/page/news/weekly/等 如何與preg_replace辦呢?

謝謝。

+0

你的重寫規則是什麼?這些參數可能在$ _GET – Jeroen

回答

0

正則表達式的解決方案:

echo preg_replace('/^([\w\W]*)\/page\/\d*/','$1','/news/weekly/page/4'); 

輸出:

/news/weekly 

,但你應該使用爆炸的解決方案:

$parts = explode('/', $_SERVER["REQUEST_URI"]); 
$url = $parts[0].'/'.$parts[1]; 
+0

好吧,非常感謝:)我使用了正則表達式解決方案並且工作得很好,所以我怎麼用正則表達式得到「/ news/page/[ID]」或者「/ news /每週/頁/ [ID]「? :) –

+0

preg_match('/ \/page \ /((\ d +)/','「/ news/page/134'',$ matches); –

+0

$匹配[1]將是您的ID –

2

可以使用explode(),而不是正則表達式:

$delimiter = '/'; 
$parts  = explode($delimiter, $_SERVER["REQUEST_URI"]); 
$whatINeed = $parts[0] . $delimiter . $parts[1]; 
0

您應該能夠使用:[A-ZA-Z /] + 但它會比較慢,然後只用SUBSTR。編輯:不substr,但爆炸。

0

嘗試:

$foo = explode('/', $_SERVER["REQUEST_URI"]); 
$resultant_url = $foo[0].'/'.$foo[1];