Особенности работы с HTML в PHP 8.4
В версиях PHP до 8.4 для выборочной очистки HTML использовался класс DOMDocument, который изначально был предназначен для работы с XML. Однако в версии 8.4 его использование приводит к тому, что возвращается пустая строка. Стал искать решение, и выяснилось, что с этой версии именно для HTML появился новый класс: Dom\HTMLDocument, а для выборки с помощью XPath вместе с ним теперь следует использовать Dom\XPath.
В итоге код для обработки HTML приобретает примерно такой вид:
[php]
Ещё одна особенность выявилась: для Dom\XPath не работает поиск по имени тега, если импорт документа делать без опции Dom\HTML_NO_DEFAULT_NS.
Т.е. нужно примерно так:
<?php
$dom = Dom\HTMLDocument::createFromString($html,Dom\HTML_NO_DEFAULT_NS);
$xpath = new Dom\XPath($dom);
$og_title = $xpath->query('//meta[@property="og:title"]');