2011-06-25 197 views
35

這似乎是一個常見的問題,但他們都不是我正在尋找的東西。如果有一個網站:PHP - 獲取當前URL

www.example.com/test.php

我想拉 「test.php的」,如果它是這樣的:

www.example.com/folder /folder1/test.php

我想再次拉動「test.php」,但一切似乎拉動確切的路徑,而不是隻是頁面。有什麼建議麼?

+4

爲什麼當你不要求一個網址這個問題,「當前的URL」爲主題?另外,如果有mod_rewrite強制網址www.exemple.com/test,它被重寫到test.php,它是test.php還是測試你想要的? – eis

回答

43
$query = $_SERVER['PHP_SELF']; 
$path = pathinfo($query); 
$what_you_want = $path['basename']; 

瞧。

+0

非常非常感謝你! –

+0

沒問題,別忘了設置爲答案! :) –

+47

更短的版本:'$ what_you_want = basename($ _ SERVER ['PHP_SELF']);' – Cyclone

2
$file = $_SERVER["SCRIPT_NAME"]; 
$break = explode('/', $file); 
$pfile = $break[count($break) - 1]; 
+0

這會回到「/folder1/folder2/test.php」 –

+0

@Howdy_McGee:你確定嗎? '$ pfile'應該只保存'test.php'。 –

+0

@Howdy_McGee經過測試,它適用於我: http://localhost/test1/test2/file.php打印「file.php」 –

40

這將讓您所請求的文件名(基於調用,而不是真正的文件的位置的URL - 萬一你正在使用mod_rewrite):

$filename = basename($_SERVER['REQUEST_URI']); 

對於既http://www.example.com/testing01.phphttp://www.example.com/x/y/z/testing01.php會給你:

testing01.php 
+4

這比接受的答案+1好兩倍。 –

+1

它與最上面的答案大致相同,但最常見的答案是更多信息用於分解IMO –

+3

@Howdy_McGee:我不同意。基本的區別是我們真正展現的。你問到「_Getting Current URL_」。根據[文檔](http://php.net/manual/en/reserved.variables.server.php):'$ _SERVER ['REQUEST_URI']'獲得「_爲了訪問此頁面而給出的URI ;例如'/index.html'._「,而$ _SERVER ['PHP_SELF']'等於」_當前正在執行的腳本的文件名,相對於文檔根目錄(...)_「,這可能會或可能不等於上述情況。我解釋了我的答案(在關於'mod_rewrite'的部分)中的差異。 – Tadeck