PHP节点值剥离html标记

PHP节点值剥离html标记,php,domdocument,nodevalue,Php,Domdocument,Nodevalue,我在其他地方也找到了类似的解决方案,但我无法转换为使用自己的代码 我有一个函数,可以在段落标记之间分割html字符串,并以数组的形式返回。代码如下 $dom = new DOMDocument(); $dom->loadHTML($string); $domx = new DOMXPath($dom); $entries = $domx->evaluate("//p"); $result = array(); foreach ($entries as $entry) { $r

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

我有一个函数,可以在段落标记之间分割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;
$dom=newdomdocument();
$dom->loadHTML($string);
$domx=新的DOMXPath($dom);
$entries=$domx->evaluate(“//p”);
$result=array();
foreach($entries作为$entry){
$result[]='.$entry->nodeValue';
}
返回$result;
有人能帮我从中删除nodeValue元素,让它返回带有html标记的段落内容吗

  • 我测试的html如下所示:

  • 下面是我对代码的完整测试(建议使用ownerDocument->saveHTML applied):

  • 测试的输出可以在这里看到:


您需要在
所有者文档
属性上调用
saveHTML

$result[] = $entry->ownerDocument->saveHTML($entry);

您需要在
ownerDocument
属性上调用
saveHTML

$result[] = $entry->ownerDocument->saveHTML($entry);


这不会返回任何内容afraid@AdamJones-我只是再次运行了一次,没有问题。我只是添加了一个链接到html Im使用(在一个字符串变量中),如果这有帮助的话,它会运行代码?ul/li不在p标签中。。。这就是为什么结果中缺少它们。@AdamJones-我刚刚用您提供的HTML运行了它。它工作正常。这不会返回任何内容afraid@AdamJones-我只是再次运行了一次,没有问题。我只是添加了一个链接到html Im使用(在一个字符串变量中),如果这有帮助的话,它会运行代码?ul/li不在p标签中。。。这就是为什么结果中缺少它们。@AdamJones-我刚刚用您提供的HTML运行了它。它运行得很好。@AdamJones-我运行了Orangepill的代码,它在
saveXML
@PédeLeão上运行得很好。我想如果内容格式不好,它可能会在saveXML上呕吐。我知道有效的HTML!=有效的XMLsave html恐怕也不能改善它。我现在已经在问题中添加了html…将xpath查询更改为
“//p |//ul”
,以便在结果中包含ul。我似乎还有另一个小问题。这与编码有关。页面中的一些chr显示为–而不是“在某些地方,空格也显示为”。有什么想法吗?@AdamJones-我运行了Orangepill的代码,它与
saveXML
@PédeLeão配合得很好。我想如果内容格式不好,它可能会在saveXML上呕吐。我知道有效的HTML!=有效的XMLsave html恐怕也不能改善它。我现在已经在问题中添加了html…将xpath查询更改为
“//p |//ul”
,以便在结果中包含ul。我似乎还有另一个小问题。这与编码有关。页面中的一些chr显示为–而不是“在某些地方,空格也显示为”。有什么想法吗?可能重复的可能重复的