Ошибка DOMDocument::loadHTML(): htmlParseEntityRef: no name in Entity
Вылетела ошибка:
DOMDocument::loadHTML(): htmlParseEntityRef: no name in Entity, line: 1637
часть скрипта где произошла ошибка:
// ...
$doc = new \DOMDocument('1.0', 'UTF-8');
$doc->loadHTML(
mb_convert_encoding(
$resp->raw_body,
'HTML-ENTITIES',
'UTF-8'
)
);
// ...
строка указанная в ошибке:
...
<div>БЁН</div>
</a>
<div class="text-muted">3616849891401</div>
</td>
<td class="artistField"><a class="gaEvent" data-ga-event-type="overview_top_releases_artistLink" href="analytics/dailytrends/artist/trendanalysis/3218982">DXGLXND & Torymah</a></td>
<td class="text-center hidden-xs"><span class="text-muted">08/06/2022</span></td>
<td class="text-center">466</td>
<td class="text-center hidden-xs">0.04 %</td>
<td class="text-center hidden-xs" data-unique-liste
...
В строке присутствует символ &
решением данной ошибки замена символа & на &
перед вставкой данных в метод loadHTML нужно обработать регуляркой
reg_replace('/&(?!amp)/', '&', $resp->raw_body)
в итоге скрипт:
// ...
$doc = new \DOMDocument('1.0', 'UTF-8');
$doc->loadHTML(
mb_convert_encoding(
preg_replace('/&(?!amp)/', '&', $resp->raw_body),
'HTML-ENTITIES',
'UTF-8'
)
);
// ...