file_get_contents 如果看到 404 则失败
file_get_contents fails if it see 404
我有一个包含 URL 的数组。我试图一个一个地获取内容,但有时,当 URL 是 404 时,file_get_contents()
会失败。
function pageContent(String $url): \DOMDocument
{
$html = cache()->rememberForever($url, function () use ($url) {
$opts = [
"http" => [
"method" => "GET",
"header" => "Accept: text/html\r\n"
]
];
try {
$context = stream_context_create($opts);
$file = file_get_contents($url, false, $context);
return $file;
} catch (\Exception $e) {
}
});
$parser = new \DOMDocument();
libxml_use_internal_errors(true);
$parser->loadHTML($html = mb_convert_encoding($html,'HTML-ENTITIES', 'ASCII, JIS, UTF-8, EUC-JP, SJIS'));
return $parser;
}
我尝试对其进行 try catch,但出现此错误。这次 loadHTML 失败了。
DOMDocument::loadHTML(): Empty string supplied as input
您可以在通过loadHTML()
加载之前检查$html
是否为空:
if(!is_empty($html)) {
$parser->loadHTML($html = mb_convert_encoding($html,'HTML-ENTITIES', 'ASCII, JIS, UTF-8, EUC-JP, SJIS'));
} else {
return null;
}
我有一个包含 URL 的数组。我试图一个一个地获取内容,但有时,当 URL 是 404 时,file_get_contents()
会失败。
function pageContent(String $url): \DOMDocument
{
$html = cache()->rememberForever($url, function () use ($url) {
$opts = [
"http" => [
"method" => "GET",
"header" => "Accept: text/html\r\n"
]
];
try {
$context = stream_context_create($opts);
$file = file_get_contents($url, false, $context);
return $file;
} catch (\Exception $e) {
}
});
$parser = new \DOMDocument();
libxml_use_internal_errors(true);
$parser->loadHTML($html = mb_convert_encoding($html,'HTML-ENTITIES', 'ASCII, JIS, UTF-8, EUC-JP, SJIS'));
return $parser;
}
我尝试对其进行 try catch,但出现此错误。这次 loadHTML 失败了。
DOMDocument::loadHTML(): Empty string supplied as input
您可以在通过loadHTML()
加载之前检查$html
是否为空:
if(!is_empty($html)) {
$parser->loadHTML($html = mb_convert_encoding($html,'HTML-ENTITIES', 'ASCII, JIS, UTF-8, EUC-JP, SJIS'));
} else {
return null;
}