PHP节点值剥离html标记


PHP nodevalue stripping html tags

我在其他地方似乎也有类似的解决方案,但我无法转换为使用自己的代码。

我有一个函数,它在段落标记之间分割一个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()