php使用curl判断网页404(不存在)的方法 原创

下面是关于“php使用curl判断网页404(不存在)的方法”的完整攻略。

使用curl判断网页是否存在

我们可以使用curl来访问网页,并判断网页是否存在。如果网页存在,我们会得到一个HTTP状态码200;如果网页不存在,则会得到HTTP状态码404。

以下是使用curl的方法的示例:

function checkPageExist($url){
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_HEADER, true);
    curl_setopt($ch, CURLOPT_NOBODY, true); // 不下载页面内容

    $response = curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);
    curl_close($ch);

    return $httpCode === 200;
}

我们通过创建一个curl resource,设置一些参数并执行curl_exec(),获取HTTP状态码,然后关闭curl resource并返回判断结果。在函数中,我们不在意下载的具体内容,用CURLOPT_HEADER和CURLOPT_NOBODY移除了响应头和响应体。

例如,我们检查https://www.google.com这个网页是否存在,调用上述函数,并输出结果:

$url = "https://www.google.com";
if (checkPageExist($url)) {
    echo "$url 存在" . PHP_EOL;
} else {
    echo "$url 不存在" . PHP_EOL;
}

输出结果:

https://www.google.com 存在

如果网页不存在,输出结果:

https://www.google.com/404 不存在

处理跳转情况

有时候,我们检查的网页会发生重定向,这时候我们需要跟随重定向来检查重定向后的网页是否存在。我们可以通过CURLOPT_FOLLOWLOCATION选项来实现自动跟随重定向:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

这段代码可以让curl跟随任何重定向,从而最终获取到重定向后的网页的状态码。

以下是带处理重定向的示例:

function checkPageExist($url){
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_HEADER, true);
    curl_setopt($ch, CURLOPT_NOBODY, true); // 不下载网页内容

    $response = curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);
    curl_close($ch);

    if ($httpCode === 301 || $httpCode === 302) {
        // 如果页面发生重定向,则继续访问重定向后的页面
        $location = curl_getinfo($ch, CURLINFO_REDIRECT_URL);
        return checkPageExist($location);
    }

    return $httpCode === 200;
}

我们使用固定的网址http://www.google.com/404作为检查网页的示例,调用checkPageExist()函数,输出结果:

$url = "http://www.google.com/404";
if (checkPageExist($url)) {
    echo "$url 存在" . PHP_EOL;
} else {
    echo "$url 不存在" . PHP_EOL;
}

输出结果:

http://www.google.com/404 不存在

这样,我们就可以使用curl来判断网页是否存在了。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:php使用curl判断网页404(不存在)的方法 原创 - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • Objective-C关键字@property使用原理探究

    Objective-C关键字@property使用原理探究 @property的作用 @property是Objective-C中的关键字,用于声明类的属性(property)。使用@property可以快速地生成访问该属性的getter和setter方法的实现代码。 例如,在一个类中声明一个属性name: @property (nonatomic, cop…

    C 2023年5月22日
    00
  • 深入浅析C/C++ 的条件编译

    下面是“深入浅析C/C++ 的条件编译”的完整攻略。 目录 条件编译的介绍 C/C++ 的条件编译指令 条件编译的使用场合 示例1:利用条件编译实现跨平台编译 示例2:利用条件编译调试代码 条件编译的介绍 条件编译是一种通过在程序中加入条件语句,根据条件来选择编译程序的一部分还是全部程序的一种技术。在C/C++语言中,可以使用条件编译指令来实现条件编译。 在…

    C 2023年5月23日
    00
  • Win11C盘空间不足怎么扩容?Win11给C盘扩容的方法

    Win11C盘空间不足怎么扩容?Win11给C盘扩容的方法,步骤如下: 操作前提 在进行操作之前,需要保证以下内容: 有一个可用的U盘或移动硬盘。 下载Windows系统的安装文件。 准备好备份重要数据的位置。 注:扩容C盘过程会涉及到更改系统分区的操作,有一定风险,如有不熟悉操作的风险,请在操作前进行备份数据以备万一。 步骤一:备份数据 在进行分区扩容之前…

    C 2023年5月23日
    00
  • 解决Win7系统启动防火墙提示错误0x8007042c的办法

    解决Win7系统启动防火墙提示错误0x8007042c的办法 问题描述 当我们启动Win7系统防火墙时,可能会遇到错误提示0x8007042c,导致防火墙无法正常工作。 解决办法 以下是解决Win7系统启动防火墙提示错误0x8007042c的具体步骤: 步骤1:检查Windows Firewall服务是否开启 首先,我们需要检查Windows Firewal…

    C 2023年5月23日
    00
  • C++实现的链表类实例

    以下是C++实现的链表类实例的完整攻略。 1. 什么是链表 链表是计算机中常用的一种动态数据结构,它通过节点之间的指针连接,可以比较方便地增、删、改、查数据。链表的节点结构一般包含两部分:数据域和指针域,数据域存储节点所存储的数据,指针域存储下一个节点的位置信息。 2. C++中实现链表类的关键 在C++中,我们可以通过定义一个链表类来实现链表的操作。链表类…

    C 2023年5月23日
    00
  • Golang 错误捕获Panic与Recover的使用

    Golang 错误捕获Panic与Recover的使用 简介 在 Golang 中,错误处理非常重要。正确的错误处理可以防止系统崩溃,并提供更良好的用户体验。在 Golang 中,有一种特殊的错误处理方式,即 Panic 和 Recover。 Panic 和 Recover 是一对关键字,用于在运行时处理程序崩溃的情况。Panic 是一种错误处理机制,它通常…

    C 2023年5月23日
    00
  • C语言实现求定积分的方法

    C语言实现求定积分的方法 在C语言中实现求定积分的方法可以采用数值积分的方式,其中常用的方法有梯形法、辛普生法和龙贝格法。 梯形法 梯形法是最简单的数值积分方法之一,具体实现步骤如下: 将积分区间[a,b]分成n个小区间,每个小区间宽度为h=(b-a)/n。 计算每个小区间左右两端点的函数值后求平均值,得到该小区间的梯形面积。 将所有小区间梯形面积相加,得到…

    C 2023年5月22日
    00
  • C#操作本地文件及保存文件到数据库的基本方法总结

    C#操作本地文件及保存文件到数据库的基本方法总结 操作本地文件是开发中经常需要处理的事情,而保存文件到数据库则会更加复杂,因此本文总结了C#操作本地文件及保存文件到数据库的基本方法。 操作本地文件 在C#中,我们可以使用System.IO命名空间下的类来操作本地文件。下面是一些常见的操作示例: 创建一个新文件 string filePath = @&quot…

    C 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部