2014-10-17 58 views
0

我是PHP的完整初学者,请记住这一点。PHP:从当前URL获取域名后的路径

我试图从当前的URL,这是可变的只是路径。例如,如果当前的URL是http://example.com/blog/2014/blogpost.html,那么我想获得/blog/2014或者非常相似的东西。

这是PHP代码,我到目前为止有:

$full_url = $_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']; 
$path_info = parse_url($full_url,PHP_URL_PATH); 
echo $path_info; 

但是,这并不工作,我似乎无法给谷歌一个合适的解决方案。

有没有人有任何指针?

在此先感谢!

+0

不起作用 - 它给了什么? – 2014-10-17 16:14:04

+0

我非常具体。 – etsnyman 2014-10-17 17:59:55

回答

1

下应该给你“/博客/ 2014 /”从你的例子:

$path_info = substr($_SERVER['PHP_SELF'], 0, strpos($_SERVER['PHP_SELF'], $_SERVER['SCRIPT_FILENAME'])); 
+1

他想要的路径'/ blog/2014',所以你需要额外的步骤来删除文件名 – Grice 2014-10-17 16:18:18

+0

谢谢@JGrice,我纠正了我的帖子。 – danmullen 2014-10-17 16:28:08

+0

如果我使用'echo $ path_info;',这不会产生错误消息,也不会输出。难道我做错了什么? – etsnyman 2014-10-17 17:21:21

3

您可以使用strrpos获得的/的最后一个索引,并在此之前,拉URI的一部分:

$req_uri = $_SERVER['REQUEST_URI']; 
$path = substr($req_uri,0,strrpos($req_uri,'/')); 

这会给你你想要的(/blog/2014

0

你可以做到这一点正是:

$url = "http://example.com/blog/2014/blogpost.html" ; 
$parts = explode('/' , $url); 
// then use any part of $parts by using $parts[i] 
+0

绝对没有帮助。 'http://'将分成3个数组值。 – 2014-10-17 16:19:10

+0

好吧,那么他可以忽略空的部分,并使用其他部分! – 2014-10-17 16:20:15