$dom = new DOMDocument('1.0', 'UTF-8'); $dom->loadHTML($content); $divs = $dom->getElementsByTagName("div"); foreach ( $divs as $div ) { if ( $class = $div->attributes->getNamedItem("class") ) { if ( $class->nodeValue == "simplegalleryholder" ) $div->parentNode->removeChild( $div ); } } $content = $dom->saveHTML();
Этот простой код должен помочь мне с удалением
<div class="simplegalleryholder"> .... </div>
из документа. Единственная проблема заключается в том, что $ content содержит специальные символы utf8 (ęśęśęś и т. Д.), Которые уничтожаются процессорами (вместо этого я получаю i? Å, ż).
Как мне подойти к этой проблеме, чтобы получить правильный результат?
Задание UTF-8
в конструкторе не делает базовую библиотеку обработки xml обработкой как utf8. Следующий обходной путь действительно хакерский, но его работы достаточно хорошо.
$encodingHint = '<meta http-equiv="Content-Type" content="text/html; charset=utf-8">'; $dom->loadHTML($encodingHint . $html);
https://bugs.php.net/bug.php?id=32547
Если вы просматриваете вывод в веб-браузере, отправьте настоящий HTTP-заголовок, а не метатег http-equiv. Это только для просмотра. Для обработки с domdocument требуется метатег.
header('content-type: text/html; charset=utf-8');