2

私はビデオ再生 Web サイトを作成しています。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=例

次に、このリンクから「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 に答える