Вот строка 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>½ 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. Я не уверен, но это похоже на то, что изображения не загружаются должным образом.
@NiettheDarkAbsol Я унаследовал этот код и просто пытаюсь пройти через все это, исправляя ошибки по ходу дела ... А еще я новичок в php. Не могли бы вы объяснить, почему вы считаете этот тег лишним? В разных ответах на аналогичную проблему я видел это использование - никто не упоминал, что это было неправильно ...






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