使用php获取vine视频id


Get vine video id using php

我需要从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)

basename可能吗?

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

http://codepad.org/vZiFP27y

假设它总是那样的格式,您可以通过/分隔符来分割url。像这样的简单url不需要Regex。

$id = end(explode('/', $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);

以下是我正在使用的:

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后面的任何字符或参数(如谷歌活动跟踪参数等)。

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

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

$vars = explode("/",$url);
echo $vars[count($vars)-1];
$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