我的网站访问者会提交链接,所以我希望发布的网址存在与否,所以我一直在使用以下功能
<?PHP
function url_exist($url){
$c=curl_init();
curl_setopt($c,CURLOPT_URL,$url);
curl_setopt($c,CURLOPT_HEADER,1);
curl_setopt($c,CURLOPT_NOBODY,1);
curl_setopt($c,CURLOPT_RETURNTRANSFER,1);
curl_setopt($c,CURLOPT_FRESH_CONNECT,1);
if(!curl_exec($c)){
return false;
}else{
return true;
}}
$ur = "http://www.google.com"; // example
if(url_exist($url)){
echo "yea valid";
}else{
echo "not valid";
}
?>
但是我的网站变得如此缓慢,甚至没有在检查有效或无效网址的步骤加载,所以我想知道是否有任何其他想法可以做同样的事情而不会在我的托管服务器上加载太多作为上述功能! ! 〜任何帮助
答案 0 :(得分:8)
使用此代码可能有效
$headers = @get_headers($url);
if(strpos($headers[0],'200')===false)return false;
因此,如果网址返回代码200以外的任何内容,您就会知道网址错误。
答案 1 :(得分:2)
$url = 'http://google.com/';
if( get_headers($url) )
echo "$url exists";
答案 2 :(得分:0)
在接受的答案中使用link中的示例:
$url = 'http://www.example.com';
$handle = @fopen($url,'r');
if ($handle !== false) {
echo 'Exists';
} else {
echo "Doesn't";
}
如果将来外部资源不可用,请在此处重现。
答案 3 :(得分:0)
您可以尝试以下代码,希望它能够正常运作。
$url = 'http://www.example.com/file.jpg';
$file_header = @get_headers($url);
if($file_header[0] == 'HTTP/1.1 404 Not Found') {
$is_exists = false;
}
else {
$is_exists = true;
}