2

我有访问者提交链接的网站,所以我想发布的网址是否存在,所以我一直在使用以下功能

<?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";
    }
?>

但是我的网站变得如此缓慢,甚至在检查有效或无效 url 的步骤中都没有加载一些东西,所以我想知道是否有其他想法可以在不加载太多的情况下在我的托管服务器上像上述功能一样做同样的事情!〜任何帮助

4

4 回答 4

8

使用此代码可能有效

$headers = @get_headers($url);
if(strpos($headers[0],'200')===false)return false;

因此,如果 url 返回代码 200 以外的任何内容,您就会知道该 url 是错误的。

于 2012-08-11T18:35:24.840 回答
2
$url = 'http://google.com/';

if( get_headers($url) )
    echo "$url exists";
于 2012-08-11T18:22:11.380 回答
0

在接受的答案中使用链接中的示例:

$url = 'http://www.example.com';
$handle = @fopen($url,'r');
if ($handle !== false) {
   echo 'Exists';
} else {
   echo "Doesn't";
}

在这里复制,以防将来外部资源不可用。

于 2015-06-19T15:48:11.670 回答
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;
}
于 2016-02-02T10:01:02.177 回答