file_get_contents терпит неудачу, если это видит 404 - PullRequest
0 голосов
/ 06 марта 2019

У меня есть массив, содержащий 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;
    }

Я попытался поймать его, но получаю эту ошибку.На этот раз loadHTML терпит неудачу.

DOMDocument::loadHTML(): Empty string supplied as input

1 Ответ

0 голосов
/ 06 марта 2019

Вы можете проверить, пусто ли $html перед загрузкой, через loadHTML():

if(!is_empty($html)) {
    $parser->loadHTML($html = mb_convert_encoding($html,'HTML-ENTITIES', 'ASCII, JIS, UTF-8, EUC-JP, SJIS'));
} else {
    return null;
}
...