网址不存在时file_get_contents

2022-08-30 08:25:23

我正在使用file_get_contents()来访问URL。

file_get_contents('http://somenotrealurl.com/notrealpage');

如果 URL 不是实际的,它将返回此错误消息。我如何优雅地让它出错,以便我知道该页面不存在并相应地采取行动而不显示此错误消息?

file_get_contents('http://somenotrealurl.com/notrealpage') 
[function.file-get-contents]: 
failed to open stream: HTTP request failed! HTTP/1.0 404 Not Found 
in myphppage.php on line 3

例如,在zend中,你可以说:if ($request->isSuccessful())

$client = New Zend_Http_Client();
$client->setUri('http://someurl.com/somepage');

$request = $client->request();

if ($request->isSuccessful()) {
 //do stuff with the result
}

答案 1

您需要检查 HTTP 响应代码

function get_http_response_code($url) {
    $headers = get_headers($url);
    return substr($headers[0], 9, 3);
}
if(get_http_response_code('http://somenotrealurl.com/notrealpage') != "200"){
    echo "error";
}else{
    file_get_contents('http://somenotrealurl.com/notrealpage');
}

答案 2

在 PHP 中使用此类命令,您可以在它们前面加上 前缀,以禁止此类警告。@

@file_get_contents('http://somenotrealurl.com/notrealpage');

如果发生故障,file_get_contents() 返回,因此,如果您根据该结果检查返回的结果,则可以处理故障FALSE

$pageDocument = @file_get_contents('http://somenotrealurl.com/notrealpage');

if ($pageDocument === false) {
    // Handle error
}

推荐