2014-10-17 124 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