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

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

我正在教自己一些基本的刮擦,我发现有时我输入到我的代码中的URL返回404,这会使我的所有其余代码变得粗糙。

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

这似乎是一项相当直接的任务,但谷歌没有给我任何答案。我担心我在寻找错误的东西。

一篇博客推荐我用这个:

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

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

但我认为给我问题的URL有一个重定向,所以$ valid对所有值都是空的。或许我做错了什么。

我也查看了“头部请求”,但我还没有找到任何可以使用或尝试的实际代码示例。

建议?这是关于卷曲的?


鸿蒙传说
浏览 891回答 3
3回答

哈士奇WWW

如果您使用的是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. */

侃侃尔雅

使用strager的代码,您还可以检查CURLINFO_HTTP_CODE以获取其他代码。有些网站不报告404,而是简单地重定向到自定义404页面并返回302(重定向)或类似的东西。我用它来检查服务器上是否存在实际文件(例如robots.txt)。很明显,这种文件如果存在则不会导致重定向,但如果不存在,则会重定向到404页面,正如我之前所说,可能没有404代码。function&nbsp;is_404($url)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;$handle&nbsp;=&nbsp;curl_init($url); &nbsp;&nbsp;&nbsp;&nbsp;curl_setopt($handle,&nbsp;&nbsp;CURLOPT_RETURNTRANSFER,&nbsp;TRUE); &nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Get&nbsp;the&nbsp;HTML&nbsp;or&nbsp;whatever&nbsp;is&nbsp;linked&nbsp;in&nbsp;$url.&nbsp;*/ &nbsp;&nbsp;&nbsp;&nbsp;$response&nbsp;=&nbsp;curl_exec($handle); &nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Check&nbsp;for&nbsp;404&nbsp;(file&nbsp;not&nbsp;found).&nbsp;*/ &nbsp;&nbsp;&nbsp;&nbsp;$httpCode&nbsp;=&nbsp;curl_getinfo($handle,&nbsp;CURLINFO_HTTP_CODE); &nbsp;&nbsp;&nbsp;&nbsp;curl_close($handle); &nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;If&nbsp;the&nbsp;document&nbsp;has&nbsp;loaded&nbsp;successfully&nbsp;without&nbsp;any&nbsp;redirection&nbsp;or&nbsp;error&nbsp;*/ &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;($httpCode&nbsp;>=&nbsp;200&nbsp;&&&nbsp;$httpCode&nbsp;<&nbsp;300)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false; &nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;true; &nbsp;&nbsp;&nbsp;&nbsp;}}
打开App,查看更多内容
随时随地看视频慕课网APP