2012-09-02 121 views
-3

可能重複:
How to get the last path in the url?正則表達式來從URL獲取路徑

我不是很好的正則表達式,因爲我還沒有來充分了解它如何努力獲得正確的結果。我需要一個正則表達式或php函數去掉url的開頭,以獲得最後一個沒有變量的位。

輸入: HTTP:// www.site.com/more/more/thepartidneed?part=Idontneed

其他輸入:www.site.com/more/more/thepartineed?partidontneed

其他輸入:site.com/more/more/partineed

所需結果剝離後: 「thepartineed」

這可能嗎?

+1

其它更多的重複:http://stackoverflow.com/search?q=get+last+path+in+url+php - 請在提問之前使用搜索功能。 [我們希望你做研究。](http://stackoverflow.com/questions/ask-advice) – Gordon

+1

我道歉,我不能拿出「路徑」一詞。 :\ – Darius

+1

請參閱:[parse_url()](http://us2.php.net/manual/en/function.parse-url.php)。應該很容易...... – ircmaxell

回答

2

首先,你需要檢查,如果給定的URL中包含http(s)://之初,如果沒有 - 它追然後做

$parsed_url = parse_url($url); 
var_dump($parsed_url); 

你會得到這樣的事情:

array(3) { 
    ["scheme"]=> 
    string(4) "http" 
    ["host"]=> 
    string(8) "site.com" 
    ["path"]=> 
    string(20) "/more/more/partineed" 
} 

如果需要路徑的只有最後一點,你可以做

echo array_pop(explode('/', $parsed_url['path'])); 
+1

你引用的輸出是'parse_url($ url)',但是你提供的是'PHP_URL_PATH'常量,所以'$ parsed_url'只是路徑段:'「/ more/more/partineed「'...所以沒有陣列...... – ircmaxell

+0

@ircmaxell是的,你是對的。我的壞 –

+1

是的,結束了使用parse_url和一些更多的過濾。 – Darius

0

假定輸入始終某種網址:

.+/([^?]+).* 

你的部分應該在標識1