Предупреждение PHP DOMDocument :: loadHTML (): раздел тега недействителен в сущности в строке 10 - PullRequest
0 голосов
/ 28 августа 2018

Вот строка 10:

$doc->loadHTML('<?xml encoding="utf-8" ?>'.$request->getData());

А вот и весь фрагмент кода из моего бэкэнда:

class ParseImageLinks{
public function __construct(){
}

public function Run(\DataLayer\Gallery\Requests\ParseImageLinks $request){
    $doc = new \DOMDocument('1.0');
    $doc->loadHTML('<?xml encoding="utf-8" ?>'.$request->getData());

    $images = $doc->getElementsByTagName ( "img");

    foreach ($images as $key => $value){
        $src = $value->getAttribute("src");
        $local = false;

        if ($src[0] == 'h') {
            $src = explode("http://", $src)[1];
        }else{
            if ($src[0] == '/') {
                $src = substr($src,1);
                $local = true;
            }
        }

        $parse = explode('/', $src);
        if (count($parse) > 2 && ($local || $parse[0] == $_SERVER['SERVER_NAME'] || $parse[0] == 'localhost:8080')) {
            $image = $parse[count($parse)-1];
            $size = $parse[count($parse)-2];

            $value->setAttribute("src", '/?image='.$image."&size=".$size);
        }
    }

    return $doc->saveHTML();
}
}

Я провел несколько часов в Интернете. Вот что я пробовал до сих пор:

  • @$doc->loadHTML('<?xml encoding="utf-8" ?>'.$request->getData());

  • libxml_use_internal_errors(true); $doc->loadHTML('<?xml encoding="utf-8" ?>'.$request->getData());

  • Я создал файл test.php с этим

    <?php
    $doc = new \DOMDocument('1.0');
    $doc->loadHTML('<ul><li>text</li>'.
    '<li>&frac12; of this is <strong>strong</strong</li></ul>');
    foreach ($doc->getElementsByTagName('li') as $node)
    {
        echo htmlentities(iconv('UTF-8', 'ISO-8859-1', $node->nodeValue)), "\n";
    }
    ?>
    

    , который следующей командой php -f test.php > res.html произошел в файле res.html с text внутри него.

  • Я также проверил, загружен ли модуль xml, и он есть.

Итак, если я правильно понимаю, DOMDocument () работает вообще, но не в рассматриваемом файле. Почему?

UPD . Я не уверен, но это похоже на причину неправильной загрузки изображений.

1 Ответ

0 голосов
/ 28 августа 2018

К сожалению, DOMDocument по-прежнему не может проанализировать документ html5. Вам нужно разобраться с обходным механизмом механизма тихой ошибки, как показано в следующих вопросах:

...