Попытка кодировать все текстовые узлы документа XHTML числовыми объектами. Использование saveXML () дает мне шестнадцатеричные значения, но я хочу Ӓ
строгие числовые значения. Он также не кодирует тире и делает некоторые странные вещи, такие как превращение © в ©
(эквивалент ©
). Я не использовал DOMDocument немного, так что это, вероятно, беспорядок, и я предполагаю, что у меня есть некоторые проблемы с кодировкой символов здесь. Вот что я получил до сих пор:
$doc = new DOMDocument();
// load file
$doc->load($input);
// options
$doc->preserveWhiteSpace = true;
$doc->resolveExternals = true;
$doc->formatOutput = true;
// new xPath
$xp = new DOMXPath($doc);
// set ns for xhtml
$xp->registerNamespace("html", "http://www.w3.org/1999/xhtml");
// get all nodes
$q = "//body/*";
$nodes = $xp->query($q);
foreach ($nodes as $n) {
$children = $n->childNodes;
foreach ($children as $child) {
echo htmlentities($child->nodeValue,ENT_QUOTES|ENT_XHTML,"UTF-8",false);
}
}
Просто выводим значения в этой точке для проверки. Некоторые вещи, такие как тире, не кодируются и должны быть, и все еще используются такие объекты, как ½
вместо ½
.
Документы могут уже содержать объекты, поэтому они не могут быть дважды закодированы, но их все же необходимо изменить на числовые значения. Что мне здесь не хватает?