2

如何检查 URL 是否存在 - 错误 404?(使用 php)

<?php
$url = "http://www.faressoft.org/";
?>
4

3 回答 3

8

如果你有allow_url_fopen,你可以这样做:

$exists = ($fp = fopen("http://www.faressoft.org/", "r")) !== FALSE;
if ($fp) fclose($fp);

虽然严格来说,这不会只为 404 错误返回 false。可以使用流上下文来获取该信息,但更好的选择是使用 curl 扩展:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/notfound");
curl_setopt($ch, CURLOPT_NOBODY, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_exec($ch);
$is404 = curl_getinfo($ch, CURLINFO_HTTP_CODE) == 404;
curl_close($ch);
于 2010-08-30T17:15:48.927 回答
3

检查404/200等的最简单的一种。

<?php
$mylink="http://site.com";
$handler = curl_init($mylink);
curl_setopt($handler,  CURLOPT_RETURNTRANSFER, TRUE);
$re = curl_exec($handler);
$httpcdd = curl_getinfo($handler, CURLINFO_HTTP_CODE);


if ($httpcdd == '404')
     { echo 'it is 404';}
else {echo 'it is not 404';}

?>
于 2013-03-27T10:37:31.563 回答
0

你可以使用 curl,它是一个 PHP 库。使用 curl,您可以查询页面,然后检查错误代码:

CURLE_HTTP_RETURNED_ERROR (22)

如果 CURLOPT_FAILONERROR 设置为 TRUE 并且 HTTP 服务器返回 >= 400 的错误代码,则会返回此信息。

来自 php.net 上的 CURL 文档:

<?php
// Create a curl handle to a non-existing location
$ch = curl_init('http://404.php.net/');

// Execute
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_exec($ch);

// Check if any error occured
if(curl_errno($ch))
{
    echo 'Curl error: ' . curl_error($ch);
}

// Close handle
curl_close($ch);
?>

http://www.php.net/manual/en/function.curl-errno.php

于 2010-08-30T17:26:49.883 回答