6

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

也许如果它很难,那么只需检查域名。

谢谢

4

4 回答 4

11

我不会用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
)
*/

在这种情况下,您可能可以根据主机名和路径来识别它。

于 2010-01-25T00:05:52.577 回答
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';

      }
于 2011-06-29T07:14:27.697 回答
2
if (preg_match ("/\b(?:vimeo|youtube|dailymotion)\.com\b/i", $url)) {
   echo "It's a video";
}
于 2010-01-25T00:05:58.293 回答
1

我不知道您是如何获得该网址的,但您可能想要检查“观看”而不仅仅是 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 ";
}
于 2010-01-25T00:31:09.187 回答