我需要从网址
获取藤蔓视频ID所以链接的输出就像这样
是这样的
bXidIgMnIPJ
我尝试在Vimeo (NOT VINE)中使用代码形式的其他问题 Get img thumbnails from Vimeo?
这是我尝试使用但我没有成功
$url = 'https://vine.co/v/bXidIgMnIPJ';
preg_replace('~^https://(?:www\.)?vine\.co/(?:clip:)?(\d+)~','$1',$url)
答案 0 :(得分:3)
basename也许?
<?php
$url = 'https://vine.co/v/bXidIgMnIPJ';
var_dump(basename($url));
答案 1 :(得分:1)
假设它始终采用该格式,您可以通过/
分隔符拆分网址。像这样的简单网址不需要正则表达式。
$id = end(explode('/', $url));
答案 2 :(得分:1)
参考,因为这里提出的问题是preg_replace
的解决方案:
$s = 'https://vine.co/v/bXidIgMnIPJ';
$new_s = preg_replace('/^.*\//','',$s);
echo $new_s;
// => bXidIgMnIPJ
或者如果您需要验证输入字符串确实是vine.co的链接:
$new_s = preg_replace('/^(https?:\/\/)?(www\.)?vine\.co.*\//','',$s);
我不知道/v/
部分是否始终存在或者总是v
...如果是,那么它也可以添加到正则表达式进行更严格的验证:
$new_s = preg_replace('/^(https?:\/\/)?(www\.)?vine\.co\/v\//','',$s);
答案 3 :(得分:1)
以下是我正在使用的内容:
function getVineId($url) {
preg_match("#(?<=vine.co/v/)[0-9A-Za-z]+#", $url, $matches);
if (isset($matches[0])) {
return $matches[0];
}
return false;
}
我使用了look-behind来确保“vine.co / v /”始终位于ID之前,而忽略了url是HTTP还是HTTPS(或者它是否完全没有协议)。它假定ID是任何长度的字母数字。它将忽略ID之后的任何字符或参数(如Google广告系列跟踪参数等)。
我使用"#" delimiter所以我不必逃避正斜杠(/),以获得更清晰的外观。
答案 4 :(得分:0)
用'/'爆炸字符串,最后一个字符串就是你想要的:)代码:
$vars = explode("/",$url);
echo $vars[count($vars)-1];
答案 5 :(得分:0)
$url = 'https://vine.co/v/b2PFre2auF5';
$regex = '/^http(?:s?):\/\/(?:www\.)?vine\.co\/v\/([a-zA-Z0-9]{1,13})$/';
preg_match($regex,$url,$m);
print_r($m);
1. b2PFre2auF5