2011-03-28 100 views
21

如何獲取網址中沒有斜槓的第二個網段? 比如我有一個URL`s這樣從網址獲取第二個網段

http://foobar/first/second 

如何獲得,其中「第一」代表的價值?

+0

舒爾這是重複的,看看這裏http://php.net/manual/en/function.parse-url.php – 2011-03-28 06:49:34

+0

你確定你有完整的網址,不只是請求uri'/ first/second'嗎?你在哪裏得到這個網址? – 2011-03-28 06:49:48

+0

@poelinca你沒有讀到 – 2011-03-28 06:50:16

回答

40

使用parse_url從URL獲取路徑,然後用explode將其分割成其部分:

$uri_path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH); 
$uri_segments = explode('/', $uri_path); 

echo $uri_segments[0]; // for www.example.com/user/account you will get 'user' 
+6

+1的問題,但我建議不要修改$ _SERVER數組。 – igorw 2011-03-28 08:10:14

8
$segments = explode('/', trim(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH), '/')); 
1

這裏是我抓住了最後一段的長篇大論方式,由甘博的回答啓發:

// finds the last URL segment 
$urlArray = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH); 
$segments = explode('/', $urlArray); 
$numSegments = count($segments); 
$currentSegment = $segments[$numSegments - 1]; 

你可以熬下來到兩路,如果你喜歡,但這種方式使得它很明顯的你在做什麼,即使沒有評論。

一旦你有了$currentSegment,你可以在if/else或switch語句中將它回顯出來或者用它來根據最終段的值做你喜歡的任何事情。

2

爲了把你的例子http://domain.com/first/second

$segments = explode('/', trim(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH), '/')); 
$numSegments = count($segments); 
$currentSegment = $segments[$numSegments - 1]; 

echo 'Current Segment: ' , $currentSegment; 

會導致當前段:第二

您可以更改numSegments -2得到第一