是否有任何 PHP 函数可以定义给定链接是视频、图片还是两者都不是。
例如:
$link = www.example.com/342kddd23
$a = phpfunction($link);
如果$link
是视频链接;$a = 1,
if$link
是图片链接$a = 2
,if$link
未定义(可能是普通链接)$a = 0
。
那可能吗?如果是这样,是否有任何现有的功能?
是否有任何 PHP 函数可以定义给定链接是视频、图片还是两者都不是。
例如:
$link = www.example.com/342kddd23
$a = phpfunction($link);
如果$link
是视频链接;$a = 1,
if$link
是图片链接$a = 2
,if$link
未定义(可能是普通链接)$a = 0
。
那可能吗?如果是这样,是否有任何现有的功能?
它不存在,但您可以制作自己的功能。它可以基于域或扩展名或两者...
例如,您可以列出最常见的视频和图片托管并检查域是否对应。
非常基础:
$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等网址。
我不相信这样的库存在(没有我知道的内置函数)。
您当然可以尝试开发自己的,但如果您打算超越简单地检查是否存在已知的文件扩展名,例如“.mp4”、“.png”等,那么您将无休止地追逐自己的尾巴。事实上,您需要构建一个越来越大的匹配 URL 模式列表。(这也意味着给定的链接可能只返回一种类型的内容,但通常情况并非如此。)
假设您正在寻找视频和图像文件本身(而不仅仅是包含视频等的 URL),另一种(更准确)的方法是请求每个链接(可能使用启用CURLOPT_HEADER的cURL),查看哪些内容标题被返回(特别是“ ”)并从那里拿东西。Content-Type
更新
作为基于@smassey 出色评论的后续行动,设置CURLOPT_NOBODY
选项(再次通过curl_setopt)将发送HEAD
请求,从而确保您实际上不会下载响应标头本身之外的任何内容。