获取最后/在url后的字符

我想要在http://www.vimeo.com/1234567这样的URL之后得到最后的字符

我怎么用PHP?

非常简单:

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

strrpos获取最后一次斜杠的位置; substr返回该位置后的所有内容。


正如redanimalwar所提到的,如果没有斜线,由于strrpos返回false,所以无法正常工作。 这是一个更强大的版本:

 $pos = strrpos($url, '/'); $id = $pos === false ? $url : substr($url, $pos + 1); 
 $str = basename($url); 

您可以基于“/” 爆炸 ,并返回最后一个条目:

 print end( explode( "/", "http://www.vimeo.com/1234567" ) ); 

这是基于将string分开,如果知道string本身的模式不会很快改变,那么这是不必要的。 也可以使用正则expression式在string的末尾find该值:

 $url = "http://www.vimeo.com/1234567"; if ( preg_match( "/\d+$/", $url, $matches ) ) { print $matches[0]; } 

你可以使用substrstrrchr

 $url = 'http://www.vimeo.com/1234567'; $str = substr(strrchr($url, '/'), 1); echo $str; // Output: 1234567 
 $str = "http://www.vimeo.com/1234567"; $s = explode("/",$str); print end($s); 

array_pop(explode("/", "http://vimeo.com/1234567")); 将返回示例url的最后一个元素

两个一 – 我怀疑第一个更快,但第二个更漂亮,不像end()array_pop() ,你可以直接将函数的结果传递给current()而不会产生任何通知或警告,因为它不移动指针或改变数组。

 $var = 'http://www.vimeo.com/1234567'; // VERSION 1 - one liner simmilar to DisgruntledGoat's answer above echo substr($a,(strrpos($var,'/') !== false ? strrpos($var,'/') + 1 : 0)); // VERSION 2 - explode, reverse the array, get the first index. echo current(array_reverse(explode('/',$var))); 

这里有一个美丽的dynamic函数,我写了删除url或path的最后部分。

 /** * remove the last directories * * @param $path the path * @param $level number of directories to remove * * @return string */ private function removeLastDir($path, $level) { if(is_int($level) && $level > 0){ $path = preg_replace('#\/[^/]*$#', '', $path); return $this->removeLastDir($path, (int) $level - 1); } return $path; }