aren't
становится aren’t
и различными другими глупостями.
Вот код;это работает в WordPress для автоматизации удаления элемента из нескольких сотен постов.
function removeImageFromPages() {
$pages = get_pages(array('exclude' => '802,6,4'));
foreach($pages AS $page) {
if($page->post_content == '') { continue; }
$doc = new DOMDocument('1.0', 'UTF-8');
$post_content = stripslashes($page->post_content);
@$doc->loadHTML($post_content);
$content = $doc->saveXML();
echo($content); exit;
}
}
Первоначально содержание поста, которым я манипулирую, было сохранено в пользовательской CMS.Начальная очистка была сделана с DOMDoc, без каких-либо проблем с кодированием.Однако во второй раз, похоже, возникли какие-то проблемы.Все заголовки во всем установлены как UTF-8, но я не очень разбираюсь в кодировании.В первый раз это была чистая HTML-царапина.Теперь я имею дело со значениями непосредственно из базы данных.Что мне не хватает?(И является ли DOMDoc даже подходящим инструментом для этой работы?)
Обновление - у меня все еще есть проблема, но есть новая информация.
Если я печатаю / echo / var_dump содержимое напрямуюиз WordPress ($ page-> post_content) проблем нет.Как только он проходит через $ doc-> saveXML или $ doc-> saveHTML, символы запутываются.Тем не менее, они не становятся предсказуемо запутанными.
$doc->loadHTML($page->post_content);
echo($doc->saveXML());
Выход aren’t
.Однако
$doc->loadHTML($page->post_content);
$ps = $doc->getElementsByTagName('p');
echo($ps->item(3)->nodeValue);
echo($doc->saveXML($ps->item(3)));
Выход arenât
(в обоих эхосигналах).
Кроме того, если я копирую / вставляю строку из документа непосредственно в функцию, она работает отлично.Это только при работе со значениями, переданными из WordPress.