Любой preg_match, чтобы проверить, является ли url ссылка на видео YouTube / Vimeo / Dailymotion? - PullRequest
7 голосов
/ 25 января 2010

Какой синтаксис preg_match лучше всего проверить, является ли URL ссылкой на видео на YouTube, Vimeo или Dailymotion?

возможно, если это сложно, тогда просто проверьте доменное имя.

Спасибо

Ответы [ 4 ]

11 голосов
/ 25 января 2010

Я бы не использовал preg_match() для этого. Я думаю, parse_url () , вероятно, лучший выбор. Вы можете передать в него строку URL, и она будет разбита на все подкомпоненты для вас.

Я не знаю, как выглядят конкретные URL-адреса видео для тех сайтов, которые вы упомянули, но я уверен, что вы могли бы придумать некоторые критерии идентификации для каждого из них, которые вы могли бы использовать с результатами parse_url() для идентификации , Например, вот как может выглядеть разбивка ссылки на YouTube:

$res = parse_url("http://www.youtube.com/watch?v=Sv5iEK-IEzw");
print_r($res);

/* outputs: 
Array (
    [scheme] => http
    [host] => www.youtube.com
    [path] => /watch
    [query] => v=Sv5iEK-IEzw
)
*/

Вероятно, вы могли бы определить его по имени хоста и пути в этом случае.

8 голосов
/ 29 июня 2011

$location = 'your url';

if(preg_match('/http:\/\/www\.youtube\.com\/watch\?v=[^&]+/', $location, $vresult)) {

          $type= 'youtube';

      } elseif(preg_match('/http:\/\/(.*?)blip\.tv\/file\/[0-9]+/', $location, $vresult)) {


          $type= 'bliptv';

      } elseif(preg_match('/http:\/\/(.*?)break\.com\/(.*?)\/(.*?)\.html/', $location, $vresult)) {

          $type= 'break';

      } elseif(preg_match('/http:\/\/www\.metacafe\.com\/watch\/(.*?)\/(.*?)\//', $location, $vresult)) {

          $type= 'metacafe';

      } elseif(preg_match('/http:\/\/video\.google\.com\/videoplay\?docid=[^&]+/', $location, $vresult)) {

          $type= 'google';

      } elseif(preg_match('/http:\/\/www\.dailymotion\.com\/video\/+/', $location, $vresult)) {

          $type= 'dailymotion';

      }
2 голосов
/ 25 января 2010
if (preg_match ("/\b(?:vimeo|youtube|dailymotion)\.com\b/i", $url)) {
   echo "It's a video";
}
1 голос
/ 25 января 2010

Я не знаю, как вы получаете этот URL, но вы можете проверить «смотреть» вместо того, чтобы просто www.youtube.com (поскольку ссылки на видео на YouTube обычно имеют путь просмотра? Что-то.

$res = parse_url("http://www.youtube.com/watch?v=Sv5iEK-IEzw");
if ( preg_match( "/\/watch/" , $res["path"]  ) ){
    echo "found video\n ";
}
...