2013-04-05 106 views
0

所以我想我需要提交這個新問題結束......PHP - 獲取URL

這裏是我的老問題:PHP - Get path minus root

我需要在PHP的方式拿網址是下列任何...

http://kenthomes.net/plan_detail.php?mod=39 
http://kenthomes.net/Amelia-Cove 

,離開我後得到的一切......

"plan_detail.php?mod=39" // If there is no alias for that page 

"Amelia-Cove" // If that page has an alias being applied 

在現實中,它們是相同的頁面,因爲別名,但並非所有這些頁面都與他們如相關的別名...

http://kenthomes.net/plan_detail.php?mod=52 

不像...

http://kenthomes.net/Amelia-Cove 

目前我使用...

trim($_SERVER['REQUEST_URI'],'/') 

這給了我...

"Amelia-Cove" // Which is fine. 

OR

"plan_detail.php" // Which is not okay. 

我需要..

"Amelia-Cove" // Which is fine. 

OR

"plan_detail.php?mod=39" // Which is fine. 

我該怎麼辦呢?

+0

'REQUEST_URI'應該工作,或者你可以檢查'QUERY_STRING' – Jon 2013-04-05 22:19:34

+2

'$ _ SERVER [ 'REQUEST_URI']'應該給你你需要什麼。試試'var_dump($ _ SERVER);'看看最適合你的是什麼。 – 2013-04-05 22:20:12

回答

5

您可以通過parse_url()

例如得到一個URL的所有部分;

$parts = parse_url('http://kenthomes.net/plan_detail.php?mod=39'); 

print_r($parts); 

應該給你這樣的事情:

Array 
(
    [scheme] => http 
    [host] => kenthomes.net 
    [path] => /plan_detail.php 
    [query] => mod=39 
) 

,您可以使用(該位後,創建一個包含你需要

0

你可以得到查詢字符串的部分你自己的網址問號),通過$_SERVER['QUERY_STRING']

1

$_SERVER["REQUEST_URI"]只包含URI。

當您還想要?之後的零件時,您還需要使用$_SERVER["QUERY_STRING"]

用途:

trim($_SERVER['REQUEST_URI'] . $_SERVER['QUERY_STRING'], '/'); 
0

parse_url,如果你只是想在最右邊,使用str_split就足夠了。

$data = parse_url($url, PHP_URL_PATH); 

應該足夠了。

否則,如果響應當前請求,$_SERVER['REQUEST_URI']可能會工作,因爲這是整個URI。

0

你可以試試這個:

$uri = $_SERVER['REQUEST_URI']; 
$qs = $_SERVER['QUERY_STRING']; 

echo trim($uri . $qs, '/');