1

YouTubeビデオIDを取得し、URLをYouTubeビデオIDだけに置き換えようとしています。これまでのところ、ビデオIDを取得する方法を見つけましたが、URLを削除できないようです。

if (preg_match('%(?:youtube(?:-nocookie)?\.com/(?:[^/]+/.+/|(?:v|e(?:mbed)?)/|.*[?&]v=)|youtu\.be/)([^"&?/ ]{11})%i', $url, $match)) {
    $video_id = $match[1];
}

例:

   http://youtu.be/dQw4w9WgXcQ ...
   http://www.youtube.com/embed/dQw4w9WgXcQ ...
   http://www.youtube.com/watch?v=dQw4w9WgXcQ ...
   http://www.youtube.com/?v=dQw4w9WgXcQ ...
   http://www.youtube.com/v/dQw4w9WgXcQ ...
   http://www.youtube.com/e/dQw4w9WgXcQ ...
   http://www.youtube.com/user/username#p/u/11/dQw4w9WgXcQ ...
   http://www.youtube.com/sandalsResorts#p/c/54B8C800269D7C1B/0/dQw4w9WgXcQ ...
   http://www.youtube.com/watch?feature=player_embedded&v=dQw4w9WgXcQ ...         

YouTubeのURLには、動画IDの後に追加のパラメータを含めることもできます。

多くの助けをいただければ幸いです。ありがとう!

4

2 に答える 2

2

すべての例の URL で、この preg_replace が機能します。さらに、動画 ID の後のすべてのパラメータを削除します

$videoID =  preg_replace("#[&\?].+$#", "", preg_replace("#http://(?:www\.)?youtu\.?be(?:\.com)?/(embed/|watch\?v=|\?v=|v/|e/|.+/|watch.*v=|)#i", "", $url));
于 2012-04-14T21:01:35.197 に答える
-1

これを試して:

<?php
$url = 'http://www.youtube.com/?v=dQw4w9WgXcQ&foo=bar&test=baz';
$path = parse_url($url, PHP_URL_PATH);
$query = parse_url($url, PHP_URL_QUERY);
parse_str($query, $args);
echo "http://www.youtube.com/watch?v=". $args['v'];

コードパッドの例

于 2012-04-14T21:22:23.037 に答える