2

我正在制作一个视频播放网站,我需要使用 html5 视频播放器来播放本地视频和 youtube api 和 vimeo api 来播放 vimeo 视频。问题是我想过滤用户输入的所有 3 个条件的链接。我尝试了一些正则表达式,因为我以前从未使用过它但没有成功。谁能帮我举一个例子,展示如何分离这些链接以制作 3 个条件

  1. 从 youtube 链接中取出“youtube”一词,以便我可以做出条件声明

  2. 同样的方法从本地视频中取出 .mp4 和 .ogg 扩展名,以便可以在 html5 视频播放器中播放

  3. 同样的方法从 vimeo 链接中提取单词“vimeo”,这样我就可以使用 vimeo api 来播放 vimeo 视频。

任何人都可以帮忙吗?

例如我们输入一个 youtube 链接

http://www.youtube.com/watch?v=example

那么如何从这个链接中得到“youtube”这个词呢?

我上传了一个带有文件名的本地视频

例子.mp4

那么我怎样才能从中获得扩展的 mp4 呢?

4

1 回答 1

2

这是改编自我之前写的一个 php 类

<?php

function identifyService ( $url )
{
    $url = preg_replace('#\#.*$#', '', trim($url));

    $services_regexp = array(
        "#^\w+\.(?P<format>[a-zA-Z0-9]{2,5})#"                     => 'local',
        '#vimeo\.com\/(?P<id>[0-9]*)[\/\?]?#i'                     => 'vimeo',
        '#youtube\.[a-z]{0,5}/.*[\?&]?v(?:\/|=)?(?P<id>[^&]*)#i'   => 'youtube'
    );

    foreach ( $services_regexp as $pattern => $service ) {
        if ( preg_match ( $pattern, $url, $matches ) ) {
            return ( $service === 'local' ) ? $matches['format']  : $service;
        }
    }

    return false;

}


$url = "foo.ogg";
// $url = "bar.mp4";
// $url = "http://www.youtube.com/watch?v=_rqR8_mOp_A";
// $url = "http://vimeo.com/39044814";
$service  = identifyService( $url );
var_dump( $service );


?>

希望能帮助到你。

于 2012-05-26T19:28:14.427 回答