是否有任何PHP函数可以定义给定链接是视频,图片还是两者都没有。
例如:
$link = www.example.com/342kddd23
$a = phpfunction($link);
如果$link
是视频链接; $a = 1,
如果$link
是图片链接$a = 2
,则$link
未定义(可能是普通链接)$a = 0
。
这可能吗?如果是的话,是否有类似的现有功能?
答案 0 :(得分:5)
它不存在,但你可以自己动手。它可以基于域名或扩展名或两者兼有......
例如,您可以列出最常见的视频和图片托管,并检查域是否对应。
非常基本:
$videos_services = array('www.youtube.com', 'www.vimeo.com');
$pics_services = array('www.flickr.com', 'www.imageshack.us');
function urlType($myUrl)
{
$url = parse_url($myUrl);
$host = $url['host'];
if(in_array($host, $videos_services))
{
return 1;
}
elseif(in_array($host, $pics_services))
{
return 2;
}
else
{
return 0;
}
}
因为这是一个非常简单的例子,但你必须处理像http://youtube.com或http://www.youtu.be等网址。
答案 1 :(得分:2)
我不相信这样的库存在(没有我所知的内置函数)。
你当然可以尝试开发自己的,但如果你打算不仅仅是检查是否有一个已知的文件扩展名,如“.mp4”,“。png”,你就会无休止地追逐你的尾巴,因为你需要构建一个越来越大的匹配URL模式列表。 (这也意味着给定的链接可能只返回单一类型的内容,而事实并非如此。)
假设您自己正在寻找视频和图像文件(而不仅仅是包含视频的网址等),另一种(更准确的)方法是请求每个链接(可能使用cURL和{ {3}}已启用),查看返回的内容标题(具体为“Content-Type
”)并从中获取内容。
的更新强> 的
作为基于@ smassey优秀评论的后续行动,设置CURLOPT_NOBODY
选项(再次通过CURLOPT_HEADER)会发送HEAD
请求,因此确保您不会下载响应标题之外的任何内容。