在最后一个/在url中获取字符

时间:2009-09-01 10:40:12

标签: php string

我希望在http://www.vimeo.com/1234567

之类的网址中输入最后一个/后面的字符

我如何处理php?

8 个答案:

答案 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)

您可以使用substrstrrchr

$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;
}