返回

PHP 如何轻松测试 URL 是否返回 404 错误?

php

轻松地用 PHP 测试 URL 是否返回 404 错误

引言

在网络抓取中,不可避免地会遇到 URL 返回 404 错误的情况,这会阻碍后续代码的运行。因此,在代码开头加入一个测试来检查 URL 是否返回 404 就很有必要。本文将探讨三种使用 PHP 来测试 URL 是否返回 404 错误的方法。

方法 1:使用 fsockopen() 函数

fsockopen() 函数用于打开网络套接字连接。它可以连接到指定的 URL 并检查其响应代码。以下是如何使用 fsockopen():

<?php
$url = 'https://example.com/page-not-found';
$valid = @fsockopen($url, 80, $errno, $errstr, 30);
if ($valid) {
    echo 'URL is valid';
} else {
    echo 'URL is not valid';
}
?>

如果 URL 有效,$valid 将不为空,否则将为空,分别输出不同的信息。

方法 2:执行 HEAD 请求

HEAD 请求只请求响应头而不下载响应体,可以快速检查 URL 是否返回 404 错误。以下是如何执行 HEAD 请求:

<?php
$url = 'https://example.com/page-not-found';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
if (curl_getinfo($ch, CURLINFO_HTTP_CODE) == 404) {
    echo 'URL is not valid';
} else {
    echo 'URL is valid';
}
?>

如果 URL 返回 404 错误,curl_getinfo() 将返回 404,否则将输出 "URL is valid"。

方法 3:使用 cURL 库

cURL 库是一个用于发送 HTTP 请求的强大工具。它可以发送 HEAD 请求并检查响应代码。以下是如何使用 cURL:

<?php
$url = 'https://example.com/page-not-found';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
if (curl_getinfo($ch, CURLINFO_HTTP_CODE) == 404) {
    echo 'URL is not valid';
} else {
    echo 'URL is valid';
}
?>

结论

本文介绍了三种使用 PHP 测试 URL 是否返回 404 错误的方法,你可以根据需要选择合适的方法。通过在代码开头加入这些测试,你可以确保在继续执行代码之前处理任何无效的 URL。

常见问题解答

Q1:哪种方法最有效?

答:每种方法都有其优点和缺点,选择最有效的方法取决于你的具体需要和偏好。

Q2:是否可以同时使用多个方法?

答:是的,你可以同时使用多种方法来增加测试的准确性。

Q3:这些方法可以测试其他响应代码吗?

答:是的,你可以通过修改响应代码来测试其他响应代码。

Q4:是否可以自动化这些测试?

答:是的,你可以使用 PHP 的 Cron 定期执行这些测试。

Q5:如何处理动态 URL?

答:对于动态 URL,你可以使用正则表达式或其他技术来提取相关信息。