file_get_contents会优雅地失败吗?

Mil*_*uzz 10 php file-get-contents

我需要file_get_contents具有容错能力,如果$url它被送到它后面会返回404,在它发出警告之前告诉我它.可以这样做吗?

Vic*_*let 17

使用HTTP包装器访问远程文件的任何函数就像它是本地的一样,将自动生成$http_response_header在本地范围内命名的局部变量.您可以访问该变量查找有关在一个呼叫发生了什么信息fopen,file_get_contents...一个远程文件.

您可以使用抑制警告@:@file_get_contents.

如果您不关心错误是什么,可以使用@file_get_contents并将结果与​​以下内容进行比较false:

$content = @file_get_contents(url);
if ($content === false) { /* failure */ } else { /* success */ }
Run Code Online (Sandbox Code Playgroud)


Gor*_*don 6

例如,您可以先执行其他(HEAD)请求以查找

$response = get_headers($url);
if($response[1] === 'HTTP/1.1 200 OK') {
    $content = file_get_contents($url);
}
Run Code Online (Sandbox Code Playgroud)

或者您可以告诉file_get_contents忽略任何错误并$url通过修改流上下文强制获取结果:

echo file_get_contents(
    'http://www.example.com/foo.html',
    FALSE,
    stream_context_create(array('http'=>array('ignore_errors' => TRUE)))
)
Run Code Online (Sandbox Code Playgroud)