我在其他地方似乎也有类似的解决方案,但我无法转换为使用自己的代码。
我有一个函数,它在段落标记之间分割一个html字符串,并在数组中返回。代码如下。。。
$dom = new DOMDocument();
$dom->loadHTML($string);
$domx = new DOMXPath($dom);
$entries = $domx->evaluate("//p");
$result = array();
foreach ($entries as $entry) {
$result[] = '<' . $entry->tagName . '>' . $entry->nodeValue . '</' . $entry->tagName . '>';
}
return $result;
有人能帮我从中删除nodeValue元素吗?这样它就可以返回带有html标记的段落内容了?
我测试的html是这样的:http://adam-makes-websites.com/tests/htmltest/test.html
下面是我对代码的完整测试(正如使用ownerDocument->saveHTML的建议一样):http://adam-makes-websites.com/tests/htmltest/runtest.txt
测试的输出可以在这里看到:http://adam-makes-websites.com/tests/htmltest/runtest.php
您需要在ownerDocument
属性上调用saveHTML
:
$result[] = $entry->ownerDocument->saveHTML($entry);
$dom = new DOMDocument();
$dom->loadHTML($string);
$entries = $dom->getElementsByTagName('p');
$new_dom = new DOMDocument();
foreach ($entries as $entry) {
$new_dom->appendChild($new_dom->importNode($entry, TRUE));
}
$result = $new_dom->saveHTML()