下面是关于“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技术站