3

我需要从 url 获取 vine 视频 id

所以链接的输出是这样的

https://vine.co/v/bXidIgMnIPJ

像这样

bXidIgMnIPJ

我尝试在这里为 Vimeo 使用其他问题的代码(不是 VINE) 从 Vimeo 获取 img 缩略图?

这是我试图使用但我没有成功

$url = 'https://vine.co/v/bXidIgMnIPJ';

preg_replace('~^https://(?:www\.)?vine\.co/(?:clip:)?(\d+)~','$1',$url)
4

6 回答 6

3

基本名称可能吗?

<?php
$url = 'https://vine.co/v/bXidIgMnIPJ';
var_dump(basename($url));    

http://codepad.org/vZiFP27y

于 2013-06-24T22:38:02.380 回答
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);
于 2013-06-24T22:51:56.403 回答
1

假设它将始终采用该格式,您可以通过/分隔符拆分 url。像这样的简单 url 不需要正则表达式。

$id = end(explode('/', $url));
于 2013-06-24T22:37:18.777 回答
1

这是我正在使用的:

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 广告系列跟踪参数等)。

我使用了“#”分隔符,这样我就不必转义正斜杠 (/),以获得更清晰的外观。

于 2013-11-24T20:16:26.177 回答
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
于 2013-07-15T16:26:48.173 回答
0

用'/'分解字符串,最后一个字符串就是你要找的:) 代码:

$vars = explode("/",$url);
echo $vars[count($vars)-1];
于 2013-06-24T22:36:54.967 回答