如何在php中使用domxpath“strip_标记”
我正在使用一个domxpath对象,希望以与strip_标记相同的方式删除标记。最后我想到了这个:如何在php中使用domxpath“strip_标记”,php,html,strip-tags,domxpath,Php,Html,Strip Tags,Domxpath,我正在使用一个domxpath对象,希望以与strip_标记相同的方式删除标记。最后我想到了这个: function strip_node(&$node) { $node_list = array(); foreach ($node->childNodes as $child) { $node->parentNode->insertBefore($child->cloneNode(true),$node); }
function strip_node(&$node)
{
$node_list = array();
foreach ($node->childNodes as $child)
{
$node->parentNode->insertBefore($child->cloneNode(true),$node);
}
$node->parentNode->removeChild($node);
}
但是,当我运行查询并尝试删除所有节点时,它失败了:
$matches = $xPath->query( "//div" );
foreach ($matches as $match)
{
strip_node($match);
}
这显然是因为$matches是原始节点的列表,但当我去掉它们时,子节点被替换为新节点
那么,我可以做些什么来获得剥离标签的功能等价物呢?如果您只想剥离所有标签,那么甚至不必为这项复杂的业务操心,只需使用innerText:$node->textContent是来自子节点的所有文本,并剥离标签。无论如何,您都不能删除节点上的\u标记。节点可以表示html/xml,但它不是一个简单的字符串,这正是strip_标记所期望的。