我需要一些帮助。我已经研究过正则表达式,但还没有完全理解它的实现。如果父级包含给定的类或ID,我需要一个将删除所有标签及其子节点的代码段。
示例:
<?php
function remove_tag($find="",$html)
{
# Remove multiple #IDs and classes at once
# When given a string (separating objects with a comma)
if (is_string($find))
{
$objects = explode(',', str_replace(' ', '', $find);
} else if (is_array($find)) {
$objects = $find;
}
foreach ($objects as $object)
{
# If ID
if (substr($object,0,1) == '#')
{
# regex to remove an id
# Ex: '<ANYTAG [any number of attributes] id='/"[any number of ids] NEEDLE [any number of ids]'/" [any number of attributes]>[anything]</ENDTAG [anything]>'
}
if (substr($object,0,1) == '.')
{
# remove a class
# Ex: '<ANYTAG [any number of attributes] class='/"[any number of classes] NEEDLE [any number of classes]'/" [any number of attributes]>[anything]</ENDTAG [anything]>'
}
# somehow remove it from the $html variable?
}
}
对不起,如果这是一个新手问题,谢谢你的时间! :)
-Pat
答案 0 :(得分:2)
您可以使用XPath代替正则表达式来查找要删除的文档中的所有元素。
DOMDocument和XPath对我来说似乎是个好开始。
您可以使用DOMNode::removeChild()
方法删除子项,使用DOMXPath
类来评估XPath,以获取需要删除的节点。