在PHP中测试404的URL的简便方法?我正在教自己一些基本的刮擦,我发现有时我输入到我的代码中的URL返回404,这会使我的所有其余代码变得粗糙。所以我需要在代码顶部进行测试,以检查URL是否返回404。这似乎是一项相当直接的任务,但谷歌没有给我任何答案。我担心我在寻找错误的东西。一篇博客推荐我用这个:$valid = @fsockopen($url, 80, $errno, $errstr, 30);然后测试以查看$ valid是否为空。但我认为给我问题的URL有一个重定向,所以$ valid对所有值都是空的。或许我做错了什么。我也查看了“头部请求”,但我还没有找到任何可以使用或尝试的实际代码示例。建议?这是关于卷曲的?
3 回答
![?](http://img1.sycdn.imooc.com/5458692c00014e9b02200220-100-100.jpg)
哈士奇WWW
TA贡献1799条经验 获得超6个赞
如果您使用的是PHP的curl
绑定,则可以使用以下方法检查错误代码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. */
![?](http://img1.sycdn.imooc.com/54584f240001db0a02200220-100-100.jpg)
侃侃尔雅
TA贡献1801条经验 获得超16个赞
使用strager的代码,您还可以检查CURLINFO_HTTP_CODE以获取其他代码。有些网站不报告404,而是简单地重定向到自定义404页面并返回302(重定向)或类似的东西。我用它来检查服务器上是否存在实际文件(例如robots.txt)。很明显,这种文件如果存在则不会导致重定向,但如果不存在,则会重定向到404页面,正如我之前所说,可能没有404代码。
function is_404($url) { $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); curl_close($handle); /* If the document has loaded successfully without any redirection or error */ if ($httpCode >= 200 && $httpCode < 300) { return false; } else { return true; }}
- 3 回答
- 0 关注
- 890 浏览
相关问题推荐
添加回答
举报
0/150
提交
取消