Я пытаюсь загрузить HTML в объект DOMDocument php. Но он не может загрузить элемент привязки с атрибутом href с амперсандом.
Это HTML-код для загрузки:
<p>Jaźń</p>
<p>gęślą<a href="http://example.com/?abc&def">zażółć</a></p>
<p>Hello!</p>
Как вы можете видеть, между abc
а также def
в строке запроса URL. Это текст UTF-8.
Загрузка этого в DOMDocument вызывает предупреждение, если амперсанд не удален. Предупреждение
Предупреждение: DOMDocument :: loadHTML (): htmlParseEntityRef: ожидая ‘;’ в Entity, строка: 2 in / in / MXN5X в строке 8
В моем phpunit это вызывает ошибку.
Код такой:
<?php
$html = <<< 'WOW'
<p>Jaźń</p>
<p>gęślą<a href="http://example.com/?abc&def">zażółć</a></p>
<p>Hello!</p>
WOW;
$dom = new DOMDocument();
$dom->loadHTML(mb_convert_encoding($html, 'HTML-ENTITIES', "UTF-8"), LIBXML_HTML_NODEFDTD);
Онлайн версия: https://3v4l.org/MXN5X
Как загрузить элемент привязки с амперсандом в объект DOMDocument?
У меня такая же проблема. ты должен использовать &
вместо & и это работает хорошо …
Других решений пока нет …