2012-09-02 74 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