2012-06-17 26 views
1

我需要的URL的最後一個字符串的內容/和/PHP獲取端線對之間的URL /和/

例如:

http://mydomain.com/get_this/ 

or 

http://mydomain.com/lists/get_this/ 

我需要在那裏get_this是網址。

+0

可能重複http://stackoverflow.com/questions/11090034/php-get-last -word-of-url-returning-blank) - 你爲什麼複製這些問題? – hakre

回答

11

trim()刪除結尾的斜線,strrpos()找到的最後一次出現(修剪完畢後)和substr()獲取最後一次出現/後的所有內容。

$url = trim($url, '/'); 
echo substr($url, strrpos($url, '/')+1); 

View output


更妙的是,你可以只使用basename(),像hakre建議:

echo basename($url); 

View output

+0

+1非正則表達式容易的解決方案 –

+1

+1我也是,雖然應該指出,這將返回最後一段uri,即使沒有結尾的斜線;)不知道這是否意圖 – poncha

+0

@Jeroen:psst,它只是'basename($ url);';) – hakre

1

假設有總是是結尾的斜線:

$parts = explode('/', $url); 
$get_this = $parts[count($parts)-2]; // -2 since there will be an empty array element due to the trailing slash 

如果不是:

$url = trim($url, '/'); // If there is a trailing slash in this URL instance get rid of it so we're always sure the last part is where we expect it 
$parts = explode('/', $url); 
$get_this = $parts[count($parts)-1]; 
+0

有人接受了downvoting spree –

+0

這些用戶應該被終身禁用.. –

+0

看起來他們是 –

0

你可以試試這個:

preg_match("/http:\/\/([a-z0-9\.]+)\/(.+)\/(.*)\/?/", $url, $matches); 
print_r($matches); 
1

像這樣的東西應該工作。

<?php 
$subject = "http://mydomain.com/lists/get_this/"; 
$pattern = '/\/([^\/]*)\/$/'; 
preg_match($pattern, $subject, $matches, PREG_OFFSET_CAPTURE, 3); 
print_r($matches); 
?> 
1

只需使用parse_url()explode()

<?php 

$url = "http://mydomain.com/lists/get_this/"; 
$path = parse_url($url, PHP_URL_PATH); 
$path_array = array_filter(explode('/', $path)); 
$last_path = $path_array[count($path_array) - 1]; 

echo $last_path; 

?> 
[PHP獲取URL返回空白的最後一個字(的