我似乎有类似的解决方案,但我无法转换为使用自己的代码。
我有一个函数可以在段落标记之间拆分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-&gt; saveHTML已应用)在这里:http://adam-makes-websites.com/tests/htmltest/runtest.txt
此处可以看到测试结果:http://adam-makes-websites.com/tests/htmltest/runtest.php
答案 0 :(得分:4)
您需要在saveHTML
媒体资源上致电ownerDocument
:
$result[] = $entry->ownerDocument->saveHTML($entry);
答案 1 :(得分:2)
$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()