使用php获取Vine视频ID

时间:2013-06-24 22:34:14

标签: php

我需要从网址

获取藤蔓视频ID

所以链接的输出就像这样

  

https://vine.co/v/bXidIgMnIPJ

是这样的

  

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)

6 个答案:

答案 0 :(得分:3)

basename也许?

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

http://codepad.org/vZiFP27y

答案 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