如果我获得该页面的标题,我可以告诉下载链接是活动的还是死的。
例如:“免费在线存储”是死链接的标题,“ [文件名] ”是活动链接的标题(mediafire)< / strong>即可。但我的页面响应时间太长,有没有其他方法可以检查下载链接是否处于活动状态或死机状态?
这就是我所做的:
<?php
function getTitle($Url){
$str = file_get_contents($Url);
if(strlen($str)>0){
preg_match("/\<title\>(.*)\<\/title\>/",$str,$title);
return $title[1];
}
}
?>
答案 0 :(得分:2)
不要执行下载整个页面/文件的GET请求,而是执行仅获取HTTP标头的HEAD请求,并检查状态是否为200,并且内容类型不是text / html
答案 1 :(得分:1)
像这样......
function url_validate($link)
{
#[url]http://www.example.com/determining-if-a-url-exists-with-curl/[/url]
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $link);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_MAXREDIRS, 10); //follow up to 10 redirections - avoids loops
$data = curl_exec($ch);
curl_close($ch);
preg_match_all("/HTTP\/1\.[1|0]\s(\d{3})/",$data,$matches);
$code = end($matches[1]);
if(!$data)
{
return(false);
}
else
{
if($code==200)
{
return(true);
}
elseif($code==404)
{
return(false);
}
}
}
您可以安全地使用任何cURL库函数。它是合法的,因此不会被视为黑客企图。唯一的要求是您的网络托管公司安装了cURL扩展,这很有可能。
答案 2 :(得分:0)
cURL
应该做的工作。如果需要,您可以检查返回的标题和文本内容。