-1

众所周知,vimeo 视频通常具有以下外观:

http://vimeo.com/123456

但是昨天我看到,有些视频是不同的,比如这个:

https://vimeo.com/donialiechti/stranded

有趣的是,当您单击链接时,您会在地址栏中看到

http://vimeo.com/64334084

此视频的嵌入代码是:

<iframe src="http://player.vimeo.com/video/64334084"... ></iframe>

问题是我的应用需要知道视频 ID 才能正常工作。 那么如何将“友好”的 url 转换为常规的 vimeo id?

提前致谢!

4

3 回答 3

5

Vimeo 在 HTTP 标头中发送重定向信息,您可以像这样获取它们:

function fetch_vimeo_id($url) {
    $headers = get_headers($url);
    # Reverse loop because we want the last matching header,
    # as Vimeo does multiple redirects with your `https` URL
    for($i = count($headers) - 1; $i >= 0; $i--) {
        $header = $headers[$i];
        if(strpos($header, "Location: /") === 0) {
            return substr($header, strlen("Location: /"));
        }
    }
    # Could not find id
    return null;
}

echo fetch_vimeo_id("https://vimeo.com/donialiechti/stranded");

输出:

64334084
于 2013-05-04T06:39:44.827 回答
3

解决此问题的更好方法是使用Vimeo 的 OEmbed API

video_id 包含在响应中,它接受 Vimeo 的所有可能的视频端点。

于 2013-05-13T21:18:25.610 回答
0

检查以下解决方案,它有效。

IE :

http://vimeo.com/11111111
http://player.vimeo.com/video/11111111
http://vimeo.com/channels/channelname/11111111
http://vimeo.com/groups/groupname/11111111

代码 :

    $vimeoUrl = 'http://vimeo.com/channels/staffpicks/11111111';
    $fetchVimeoIdArr = explode('/', $vimeoUrl);
    $idCounter = count($fetchVimeoIdArr) - 1;
    $vimeoId = $fetchVimeoIdArr[$idCounter];
于 2016-03-11T07:09:32.997 回答