Rya*_*yan 7 php regex preg-match
检查url是youtube/vimeo /或dailymotion的视频链接的最佳preg_match语法是什么?
也许如果它很难,那么只需检查域名.
谢谢
zom*_*bat 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
)
*/
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您可以根据主机名和路径识别它.
$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';
}
Run Code Online (Sandbox Code Playgroud)