如何使用PHP获取以下html字符串:
$html ="<div><table><tbody><tr>
<td>
<a>Item1</a>
</td>
<td>
<a id="item2">Item2</a>
</td>
<td>
<a>Item3</a>
</td>
</tr></tbody></table></div>";
并删除包含id="item2"
?
具有目标id(item2)的元素也可以具有其他属性,并且td parent可以在其下具有其他节点。我想完全删除td及其下面的所有内容,如果它包含一个id =我目标的元素。
我花了一个小时用DOMdocument和类似的php函数尝试各种各样的事情,但我只是让自己感到困惑。
删除td
节点后,我希望html字符串返回原始变量$html
。
在不产生任何错误或警告的情况下,最简单的方法是什么?
答案 0 :(得分:1)
你可以使用正则表达式:
print_r(preg_replace('#<[^>]+ id="item2">[^<]+</[^>]+>#i', '', $html));
现在正在更新正则表达式,你可以用$ item复制item2,希望它可以非常动态
重试它我更新了它,在php我们必须使用##围绕正则表达式而不是//,对不起
上次更新:
print_r(preg_replace('#<[^>]+>[^<]*<[^>]+ id="item2"[^>]*>[^<]+</[^>]+>[^<]*</[^>]+>#i', '', $html));
答案 1 :(得分:1)
使用PHP的DOMDocument来解析字符串并删除节点。例如:
$dom = new DOMDocument();
$dom->loadHTML($html);
$target_node = $dom->getElementById('item2');
$target_node->parentNode->removeChild($target_node);
$new_html = $dom->saveHTML();