0

重複の可能性:
phpregex-文字列内のすべてのYouTubeビデオIDを検索する
PHP付きのURLからYouTubeビデオIDを取得する

YouTubeにはURLを表示するためのいくつかの形式があるかもしれないことに気づきました。リンクがこのURL形式のみである場合にのみビデオIDを抽出するいくつかのphpコードを作成しました:http://www.youtube.com/watch?v=videoid

YouTubeビデオIDを抽出するためのこの正規表現を見つけましたが、コードに適用する方法がわかりません。コード内に配置しましたが、何も起こりません。どうすればそれを自分のコードに適用できますか、あるいは全体的に別のメソッドに適用できますか?

ここに私のサイトがあります。

ただし、このURL形式からビデオIDを取得できません。

latest short format: http://youtu.be/NLqAF9hrVbY
iframe: http://www.youtube.com/embed/NLqAF9hrVbY
iframe (secure): https://www.youtube.com/embed/NLqAF9hrVbY
object param: http://www.youtube.com/v/NLqAF9hrVbY?fs=1&hl=en_US
object embed: http://www.youtube.com/v/NLqAF9hrVbY?fs=1&hl=en_US
watch: http://www.youtube.com/watch?v=NLqAF9hrVbY
users: http://www.youtube.com/user/Scobleizer#p/u/1/1p3vcRhsYGo
ytscreeningroom: http://www.youtube.com/ytscreeningroom?v=NRHVzbJVx8I
any/thing/goes!: http://www.youtube.com/sandalsResorts#p/c/54B8C800269D7C1B/2/PPS-8DMrAn4
any/subdomain/too: http://gdata.youtube.com/feeds/api/videos/NLqAF9hrVbY
more params: http://www.youtube.com/watch?v=spDj54kf-vY&feature=g-vrec

PHP

    <?php

    $vari ='';

    if($_POST)
    {


        $url     = $_POST['yurl'];
        $parsed_url = parse_url($url);


        parse_str($parsed_url['query'], $parsed_query_string);
        $v = $parsed_query_string['v'];

        $hth        = 300; //$_POST['yheight'];
        $wdth       = 500; //$_POST['ywidth'];
        $is_auto    =   0;

    ?>

<p>Iframe Result:</p>   
<?
//Iframe code with optional autoplay

echo  ('<iframe src="http://www.youtube.com/embed/'.$v.'" frameborder="0" width="'.$wdth.'" height="'.$hth.'"></iframe>');

?>

<p>Old way to embedd result: </p>
<?
//Old way to embed code- optional autoplay
echo  ('<embed width="'.$wdth.'" height="'.$hth.'" type="application/x-shockwave-flash" src="http://www.youtube.com/v/'.$v.'" wmode="transparent" embed="" /></embed>');
}
?>

HTML

<form method="post" action="">
URL:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="text" value="<?php $url ?>" name="yurl"> <!--$vari-->
<br>
<input type="submit" value="Generate Embed Code" name="ysubmit">
<br>
</form>
4

1 に答える 1

1

尋ねられた前の質問からこの答えを試してください:

function parse_yturl($url) 
    {
        $pattern = '#^(?:https?://)?(?:www\.)?(?:youtu\.be/|youtube\.com(?:/embed/|/v/|/watch\?v=|/watch\?.+&v=))([\w-]{11})(?:.+)?$#x';
        preg_match($pattern, $url, $matches);
        return (isset($matches[1])) ? $matches[1] : false;
    }
于 2012-07-11T18:19:41.493 に答える