PHP:PHP(超文本预处理器)是一种广泛使用的开源服务器端脚本语言,专为 Web 开发而设计。它最初由 Rasmus Lerdorf 于 1994 年创建,现已发展成为全球数百万开发人员使用的强大语言。
PHP 主要用于开发动态网页和 Web 应用程序。它允许开发人员将 PHP 代码嵌入 HTML,从而轻松地将服务器端逻辑与表示层混合。 PHP 脚本在服务器上执行,并将生成的 HTML 发送到客户端的浏览器。
要测试 PHP 中的 URL 是否有 404 错误,您可以采取不同的方法。以下是一些替代方法:
使用 file_get_contents
将 get_headers 和 strpos 与stream_context_create 结合使用
将curl_exec与CURLOPT_NOBODY一起使用
在这种方法中,isUrlValid 函数将 URL 作为参数。它创建一个将ignore_errors设置为true的流上下文,这会抑制file_get_contents在获取URL内容时可能遇到的任何错误。
然后使用 file_get_contents 函数获取 URL 的内容,并将流上下文作为第三个参数传递。该函数以字符串形式返回内容。
响应标头存储在 $http_response_header 变量中,该变量由 file_get_contents 使用上次 HTTP 请求的标头自动填充。
然后,该函数循环访问标头,并使用 stripos(不区分大小写的搜索)检查标头是否包含字符串“HTTP/1.1 404”。如果找到带有 404 响应代码的标头,则意味着 URL 无效或返回 404 错误,函数返回 false。
如果在 headers 中没有找到 404 响应代码,函数返回 true,表明 URL 有效。
您可以将“http://example.com”替换为您要测试的URL。请记住,file_get_contents 可能会受到某些服务器配置的限制,因此请确保您的环境允许它。
以下是在 PHP 中使用 get_headers 和 strpos 与stream_context_create 来测试 URL 是否有 404 错误的详细说明:
<?php function isUrlValid($url) { // Disable error reporting for file_get_contents $context = stream_context_create(['http' => ['ignore_errors' => true]]); // Fetch the URL content $content = file_get_contents($url, false, $context); // Get the response headers $headers = $http_response_header; // Check if the response code contains "404" foreach ($headers as $header) { if (stripos($header, 'HTTP/1.1 404') !== false) { return false; // URL is invalid or returns a 404 error } } return true; // URL is valid } // Usage $url = "http://example.com"; if (isUrlValid($url)) { echo "URL is valid."; } else { echo "URL is invalid or returns a 404 error."; } ?>
在这种方法中,isUrlValid 函数将 URL 作为参数。它使用stream_context_create 创建一个流上下文,并将选项ignore_errors 设置为true。此上下文用于忽略检索 URL 标头时遇到的任何错误。
然后使用 URL 和流上下文作为参数调用 get_headers 函数。它返回一个包含 URL 响应标头的数组。
该函数检查 headers 数组的第一个元素 ($headers[0]) 并使用 strpos 在标头中搜索字符串“404”。如果找到字符串“404”,则表示该 URL 无效或返回 404 错误,函数返回 false。
如果在 header 中没有找到字符串“404”,函数返回 true,表明 URL 有效。
您可以将“http://example.com”替换为您要测试的URL。确保在 PHP 配置中启用了 get_headers 函数和stream_context_create 函数。
这里有关于在 PHP 中使用带有 CURLOPT_NOBODY 选项的curl_exec 来测试 URL 是否有 404 错误的详细说明:
<?php function isUrlValid($url) { // Create a stream context with "ignore_errors" set to true $context = stream_context_create(['http' => ['ignore_errors' => true]]); // Fetch the URL headers $headers = get_headers($url, 0, $context); // Check if the response code contains "404" if (strpos($headers[0], '404') !== false) { return false; // URL is invalid or returns a 404 error } return true; // URL is valid } // Usage $url = "http://example.com"; if (isUrlValid($url)) { echo "URL is valid."; } else { echo "URL is invalid or returns a 404 error."; } ?>
在这种方法中,isUrlValid 函数将 URL 作为参数。它使用curl_init 和URL 来初始化cURL 会话。
curl_setopt函数用于将CURLOPT_NOBODY选项设置为true,即发送HEAD请求而不是GET请求。这样,仅检索响应标头,而不是整个响应正文。
CURLOPT_RETURNTRANSFER 选项设置为 true 以确保响应以字符串形式返回。
接下来调用curl_exec来执行cURL请求。
执行请求后,curl_getinfo 用于使用 CURLINFO_HTTP_CODE 选项从 cURL 会话中检索 HTTP 响应代码。
最后调用curl_close关闭cURL会话。
该函数然后检查响应代码是否不等于 404。如果响应代码不是 404,则表示 URL 有效,函数返回 true。否则,返回 false,表示该 URL 无效或返回 404 错误。
您可以将“http://example.com”替换为您要测试的URL。确保您在 PHP 配置中启用了 cURL 扩展,才能使此方法发挥作用。
所有这三种方法都提供了在 PHP 中测试 URL 是否有 404 错误的方法。它们都有各自的优点和缺点,选择取决于您的具体要求和项目中可用的库。您可以选择最适合您需求的方法。
以上是如何在 PHP 中测试 URL 是否出现 404 错误?的详细内容。更多信息请关注PHP中文网其他相关文章!