У меня есть строковое значение, для которого я пытаюсь извлечь элементы списка.Я хотел бы извлечь текст и любые подузлы, однако DOMDocument преобразует сущности в символ, а не оставляет в исходном состоянии.
Я пытался установить DOMDocument :: resolExternals и DOMDocument ::substituteEntities для false, но это не имеет никакого эффекта.Следует отметить, что я работаю на Win7 с PHP 5.2.17.
Пример кода:
$example = '<ul><li>text</li>'.
'<li>½ of this is <strong>strong</strong></li></ul>';
echo 'To be converted:'.PHP_EOL.$example.PHP_EOL;
$doc = new DOMDocument();
$doc->resolveExternals = false;
$doc->substituteEntities = false;
$doc->loadHTML($example);
$domNodeList = $doc->getElementsByTagName('li');
$count = $domNodeList->length;
for ($idx = 0; $idx < $count; $idx++) {
$value = trim(_get_inner_html($domNodeList->item($idx)));
/* remainder of processing and storing in database */
echo 'Saved '.$value.PHP_EOL;
}
function _get_inner_html( $node ) {
$innerHTML= '';
$children = $node->childNodes;
foreach ($children as $child) {
$innerHTML .= $child->ownerDocument->saveXML( $child );
}
return $innerHTML;
}
½
заканчивается преобразованием в ½ (одиночный символ / UTF-8 версия, а не версия объекта), который не является желаемым форматом.