任何preg_match来检查网址是否是youtube / vimeo / dailymotion视频链接?

时间:2010-01-24 23:51:10

标签: php regex preg-match

检查网址是youtube / vimeo /或dailymotion的视频链接的最佳preg_match语法是什么?

也许如果很难,那就检查一下域名。

由于

4 个答案:

答案 0 :(得分:11)

我不会使用preg_match()。我认为parse_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
)
*/

您可以根据主机名和本例中的路径识别它。

答案 1 :(得分:8)

$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 :(得分:2)

if (preg_match ("/\b(?:vimeo|youtube|dailymotion)\.com\b/i", $url)) {
   echo "It's a video";
}

答案 3 :(得分:1)

我不知道你是如何获得这个网址的,但是你可能想要查看“观看”而不仅仅是www.youtube.com(因为你的视频链接通常都有观看的路径吗?

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