我希望在http://www.vimeo.com/1234567
我如何处理php?
答案 0 :(得分:228)
非常简单:
$id = substr($url, strrpos($url, '/') + 1);
strrpos获取最后一次斜线的位置; substr返回该位置后的所有内容。
如redanimalwar所述,如果没有斜杠,则由于strrpos
返回false,因此无法正常工作。这是一个更强大的版本:
$pos = strrpos($url, '/');
$id = $pos === false ? $url : substr($url, $pos + 1);
答案 1 :(得分:41)
$str = basename($url);
答案 2 :(得分:13)
您可以explode基于“/”,并返回最后一个条目:
print end( explode( "/", "http://www.vimeo.com/1234567" ) );
这是基于将字符串分开,如果您知道字符串本身的模式不会很快改变,那么这是不必要的。或者,您可以使用正则表达式在字符串末尾找到该值:
$url = "http://www.vimeo.com/1234567";
if ( preg_match( "/\d+$/", $url, $matches ) ) {
print $matches[0];
}
答案 3 :(得分:11)
$url = 'http://www.vimeo.com/1234567';
$str = substr(strrchr($url, '/'), 1);
echo $str; // Output: 1234567
答案 4 :(得分:6)
$str = "http://www.vimeo.com/1234567";
$s = explode("/",$str);
print end($s);
答案 5 :(得分:1)
array_pop(explode("/", "http://vimeo.com/1234567"));
将返回示例网址的最后一个元素
答案 6 :(得分:0)
两个内衬 - 我怀疑第一个更快但第二个更漂亮而且不像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)));
答案 7 :(得分:-1)
这是我写的一个漂亮的动态函数,用于删除网址或路径的最后一部分。
/**
* 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;
}