我正在使用simplehtmldom解析器来解析网址内容。
它包含以下代码行:
$contents = file_get_contents($url, $use_include_path, $context, $offset);
当URL不存在时, file_get_contents
会返回警告。如何处理此类情况的所有可能错误,即404和所有其他可能的错误。
Warning: file_get_contents(http://www.something-not-valid-bla-bla-1234.com/): failed to open stream: php_network_getaddresses: getaddrinfo failed: Name or service not known in simple_html_dom.php on line 76
答案 0 :(得分:3)
将@
放在file_get_contents
前面,然后检查$contents === false;
是否
$contents = @file_get_contents($url, $use_include_path, $context, $offset);
if ($contents === false) {
//Something went wrong.
}
编辑:@
可以防止错误被丢弃。
答案 1 :(得分:1)
我更喜欢这样做,(单一作业)
if( false === ( $contents = @file_get_contents($url, $use_include_path, $context, $offset))) {
//Something went wrong.
}
还要注意严格的===相等运算符而不仅仅是==
@Update我同意Dagon关于cUrl,因为你正在访问内容-via-一个url,即使使用file_get_contents也可能无法正常工作,具体取决于你的php设置。进一步的信息我发现这个相关的问题,解释是相当长的tho,并需要在实现中进行一些更改。