一尘不染

在PHP中测试404 URL的简单方法?

php

我正在自学一些基本的抓取方法,但发现有时输入到代码中的URL返回404,这将困扰我所有的代码。

因此,我需要在代码顶部进行测试,以检查URL是否返回404。

这似乎是一个非常直截了当的任务,但是Google并没有给我任何答案。我担心我在寻找错误的东西。

一个博客建议我使用这个:

$valid = @fsockopen($url, 80, $errno, $errstr, 30);

然后测试以查看$ valid是否为空。

但是我认为给我带来问题的URL上有一个重定向,因此$ valid对于所有值都为空。也许我在做其他错误。

我还研究了“ head请求”,但还没有找到可以使用或尝试的任何实际代码示例。

有什么建议吗?卷曲是什么意思?


阅读 181

收藏
2020-05-26

共1个答案

一尘不染

如果您使用的是PHP的curlbindings,则可以这样检查错误代码curl_getinfo

$handle = curl_init($url);
curl_setopt($handle,  CURLOPT_RETURNTRANSFER, TRUE);

/* Get the HTML or whatever is linked in $url. */
$response = curl_exec($handle);

/* Check for 404 (file not found). */
$httpCode = curl_getinfo($handle, CURLINFO_HTTP_CODE);
if($httpCode == 404) {
    /* Handle 404 here. */
}

curl_close($handle);

/* Handle $response here. */
2020-05-26