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

Joh*_*han 115 php string

我想在最后一个/在一个网址之后得到这些字符 http://www.vimeo.com/1234567

我怎么用PHP?

Dis*_*oat 242

非常简单:

$id = substr($url, strrpos($url, '/') + 1);
Run Code Online (Sandbox Code Playgroud)

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


正如redanimalwar所提到的,如果没有斜杠,则strrpos返回false将无法正常工作.这是一个更强大的版本:

$pos = strrpos($url, '/');
$id = $pos === false ? $url : substr($url, $pos + 1);
Run Code Online (Sandbox Code Playgroud)

  • 我想知道为什么`$ str = basename($ url)`没有得到更多的upvotes,对我来说非常好. (7认同)
  • @redanimalwar (1) basename 用于文件路径,而不是 URL - 我认为它总是会返回相同的结果,但可能存在反斜杠等边缘情况;(2) basename 仅适用于斜杠,而如果其他人想用不同的字符做同样的事情,我的答案可以很容易地修改。 (2认同)

GZi*_*ipp 46

$str = basename($url);
Run Code Online (Sandbox Code Playgroud)

  • 这对网址有效吗?basename 不是用于文件路径吗? (2认同)
  • 似乎工作正常,这是一个字符串函数; 它不会检查路径是否存在. (2认同)

Sam*_*son 13

您可以根据"/"进行爆炸,并返回最后一个条目:

print end( explode( "/", "http://www.vimeo.com/1234567" ) );
Run Code Online (Sandbox Code Playgroud)

这是基于将字符串分开,如果你知道字符串本身的模式不会很快改变的话,这是不必要的.或者,您可以使用正则表达式在字符串末尾找到该值:

$url = "http://www.vimeo.com/1234567";

if ( preg_match( "/\d+$/", $url, $matches ) ) {
    print $matches[0];
}
Run Code Online (Sandbox Code Playgroud)

  • 该示例抛出一个通知,应该明确地重新工作。 (2认同)

Gab*_*iel 11

你可以使用substrstrrchr:

$url = 'http://www.vimeo.com/1234567';
$str = substr(strrchr($url, '/'), 1);
echo $str;      // Output: 1234567
Run Code Online (Sandbox Code Playgroud)


gho*_*g74 7

$str = "http://www.vimeo.com/1234567";
$s = explode("/",$str);
print end($s);
Run Code Online (Sandbox Code Playgroud)

  • 我的版本,虽然最终结果与发布的结果相同,但如果他愿意,OP可以使用拆分字符串的其他项目. (3认同)