Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 确定链接的内容_Php - Fatal编程技术网

Php 确定链接的内容

Php 确定链接的内容,php,Php,是否有任何PHP函数定义给定链接是视频还是图片,或者两者都不是 例如: $link = www.example.com/342kddd23 $a = phpfunction($link); 如果$link是视频链接$a=1,如果$link是图片链接$a=2,如果$link未定义(可能是正常链接)$a=0 可能吗?如果是这样的话,有没有类似的现有函数?我不相信存在这样的库(我知道没有内置函数) 当然,您可以尝试开发自己的文件扩展名,但如果您计划不只是简单地检查是否存在已知的文件扩展名,如“.mp

是否有任何PHP函数定义给定链接是视频还是图片,或者两者都不是

例如:

$link = www.example.com/342kddd23
$a = phpfunction($link);
如果
$link
是视频链接
$a=1,
如果
$link
是图片链接
$a=2
,如果
$link
未定义(可能是正常链接)
$a=0


可能吗?如果是这样的话,有没有类似的现有函数?

我不相信存在这样的库(我知道没有内置函数)

当然,您可以尝试开发自己的文件扩展名,但如果您计划不只是简单地检查是否存在已知的文件扩展名,如“.mp4”、““.png”等,那么您将无休止地追尾,因为您需要构建一个越来越大的匹配URL模式列表。(这也意味着给定的链接可能只返回单一类型的内容,而事实往往并非如此。)

假设您正在查找视频和图像文件本身(而不仅仅是包含视频的URL等),另一种(更准确的)方法是请求每个链接(可能在启用的情况下使用),查看返回的内容标题(特别是“
content Type
”),并从中获取信息

更新


根据@smassey的精彩评论,设置
CURLOPT_NOBODY
选项(再次通过)将发送
HEAD
请求,从而确保您不会下载响应标题之外的任何内容。

我认为不存在这样的库(我知道没有内置函数)

当然,您可以尝试开发自己的文件扩展名,但如果您计划不只是简单地检查是否存在已知的文件扩展名,如“.mp4”、““.png”等,那么您将无休止地追尾,因为您需要构建一个越来越大的匹配URL模式列表。(这也意味着给定的链接可能只返回单一类型的内容,而事实往往并非如此。)

假设您正在查找视频和图像文件本身(而不仅仅是包含视频的URL等),另一种(更准确的)方法是请求每个链接(可能在启用的情况下使用),查看返回的内容标题(特别是“
content Type
”),并从中获取信息

更新


根据@smassey的精彩评论,设置
CURLOPT_NOBODY
选项(再次通过)将发送
HEAD
请求,从而确保您不会实际下载响应标题之外的任何内容。

它不存在,但您可以自行创建功能。它可以基于域或扩展或两者

例如,您可以列出最常见的视频和图片托管,并检查域是否对应

非常基本:

$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;
   }
}

请注意,这是一个非常简单的示例,但您必须处理url等。

它不存在,但您可以创建自己的函数。它可以基于域或扩展或两者

例如,您可以列出最常见的视频和图片托管,并检查域是否对应

非常基本:

$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;
   }
}

小心点,这是一个非常简单的例子,但你必须处理url like或等。你的链接:$link=www.xxx.com/342kddd23是指向youtube视频和图片还是视频和图片的实际文件,因为如果它的文件你只需在文件扩展名上进行检测。你的链接:$link=www.xxx.com/342kddd23是指向youtube视频和图片还是实际文件视频和图片的文件,因为如果它的文件您可以在文件扩展名上进行检测。这种方法的问题是,它会认为(例如)是一个视频。是的,但有了这种解决方案,您将无休止地调整规则,但我想,如果你说的是指向可能包含视频的页面的URL,而不是指向图像/视频的直接链接,那么这是唯一可行的解决方案。这种方法的问题是,它会认为(例如)是视频。是的,但有了这种解决方案,你只会无休止地调整规则,但是,如果你说的是指向可能包含视频的页面的URL,而不是指向图像/视频的直接链接,那么我想这是唯一可行的解决方案。此外,不要发出普通的GET/POST请求,而是发送HTTP HEAD请求,以免在尝试下载mp4s时爆炸带宽/最大执行时间。)HTTP头请求仅用头而不是实际内容来响应。干杯——@smassey说的是明智的话。我已经更新了我的答案以包含此内容。除此之外,不要发出普通的GET/POST请求,而是发送HTTP HEAD请求,以避免在尝试下载mp4s时爆炸带宽/max_execution_time;)HTTP头请求仅用头而不是实际内容来响应。干杯——@smassey说的是明智的话。我已经更新了我的答案,以纳入这一点。