当前位置:首页 > PHP教程 >

php使用CURL判断网页404

发布时间:2024-06-11 09:28:26 作者:佚名 阅读:(2)

在PHP中,可以使用CURL库来进行网络请求,并获取远程服务器返回的状态码。通过判断状态码,可以确定网页是否存在或者返回404错误。接下来云梦编程网为大家介绍如何使用PHP中的CURL库来判断网页是否返回404状态码的方法。有需要的小伙伴可以参考一下:

php使用CURL判断网页404

1、使用CURL方法

	/**
	 * php使用curl判断404
	 * author: yundreams
	 * Date: 2024/06/11
	 * Time: 09:23
	 */
	 function chkurl($url){
	     $handle = curl_init($url);
	     curl_setopt($handle, CURLOPT_RETURNTRANSFER, TRUE);
	     curl_setopt($handle, CURLOPT_CONNECTTIMEOUT, 10);//设置超时时间
	     curl_exec($handle);
	     //检查是否404(网页找不到)
	     $httpCode = curl_getinfo($handle, CURLINFO_HTTP_CODE);
	     if($httpCode == 404) {
	         return false;
	     }else{
	         return true;
	     }
	     curl_close($handle);
	 }
	 $url="https://www.yundreams.com/article/420.html";
	 if(chkurl($url)==true){
	     echo "存在";
	 }else{
	     echo "不存在";
	 }

2、使用fsockopen函数

function isPageExist($url) {
    $parsed_url = parse_url($url);
    $host = $parsed_url['host'];
    $path = isset($parsed_url['path']) ? $parsed_url['path'] : '/';
 
    // 设置超时时间
    $timeout = 10;
 
    $fp = @fsockopen($host, 80, $errno, $errstr, $timeout);
    if ($fp) {
        $request = "GET $path HTTP/1.1\r\n";
        $request .= "Host: $host\r\n";
        $request .= "Connection: Close\r\n\r\n";
 
        fwrite($fp, $request);
        $response = fgets($fp, 4096);
 
        fclose($fp);
 
        // 检查HTTP响应码
        if (preg_match('|HTTP/1\.1 (\d{3}) |', $response, $matches)) {
            $statusCode = $matches[1];
            if ($statusCode == 404) {
                return false; // 页面不存在
            } else {
                return true; // 页面存在
            }
        } else {
            // 无法解析响应码,默认页面存在
            return true;
        }
    } else {
        // 连接失败
        return false;
    }
}
 
// 使用示例
$url = "https://www.yundreams.com/article/420.html";
if (isPageExist($url)) {
    echo "页面存在";
} else {
    echo "页面不存在";
}


通过以上方法,可以使用PHP中的CURL库来判断网页是否返回404状态码。希望本文对你理解如何使用PHP的CURL来判断网页是否返回404状态码有所帮助!

© 2023 - 云梦编程网 版权所有 鲁ICP备2021017318号-4