php DOMDocument – манипулирование и кодирование

$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');