我需要从 url 获取 vine 视频 id
所以链接的输出是这样的
像这样
bXidIgMnIPJ
我尝试在这里为 Vimeo 使用其他问题的代码(不是 VINE) 从 Vimeo 获取 img 缩略图?
这是我试图使用但我没有成功
$url = 'https://vine.co/v/bXidIgMnIPJ';
preg_replace('~^https://(?:www\.)?vine\.co/(?:clip:)?(\d+)~','$1',$url)
我需要从 url 获取 vine 视频 id
所以链接的输出是这样的
像这样
bXidIgMnIPJ
我尝试在这里为 Vimeo 使用其他问题的代码(不是 VINE) 从 Vimeo 获取 img 缩略图?
这是我试图使用但我没有成功
$url = 'https://vine.co/v/bXidIgMnIPJ';
preg_replace('~^https://(?:www\.)?vine\.co/(?:clip:)?(\d+)~','$1',$url)
基本名称可能吗?
<?php
$url = 'https://vine.co/v/bXidIgMnIPJ';
var_dump(basename($url));
这里提到的问题是一个解决方案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);
假设它将始终采用该格式,您可以通过/
分隔符拆分 url。像这样的简单 url 不需要正则表达式。
$id = end(explode('/', $url));
这是我正在使用的:
function getVineId($url) {
preg_match("#(?<=vine.co/v/)[0-9A-Za-z]+#", $url, $matches);
if (isset($matches[0])) {
return $matches[0];
}
return false;
}
我使用了后视功能来确保“vine.co/v/”始终位于 ID 之前,同时忽略了 url 是 HTTP 还是 HTTPS(或者它完全没有协议)。它假定 ID 是任意长度的字母数字。它将忽略 id 之后的任何字符或参数(如 Google 广告系列跟踪参数等)。
我使用了“#”分隔符,这样我就不必转义正斜杠 (/),以获得更清晰的外观。
$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
用'/'分解字符串,最后一个字符串就是你要找的:) 代码:
$vars = explode("/",$url);
echo $vars[count($vars)-1];