删除包含特定 id 或 类 属性的 PHP 元素

Deleting elements with PHP that contains specific id or classes attribute

我有一个简单的问题,但我没有找到答案。

我有这个简单的 html 代码:

<div class="iWantThisElement">
Not Delete this one
</div>
...
<div class="itemx">
Delete This
</div>
...
<span id="xxitemsxx">
Delete This
</span>
...
<div class="delete">
Delete This
</div>
...
<h2 id="deleteThisOneToo">
Delete This
</h2>
...
<div class="Iwantthis">
Not Delete this one
</div>

我想要一个规则来删除所有元素,其中 classid 包含特定的词或单词,例如,我想用这些单词删除 classes 或 ids :

itemx,xxitemsxx,deleteThisOneToo,删除

所以,我们可以有这样一个数组:

$array = array("item","delete");

并且如果 任何 元素(如 h2divspan 等)包含 id OR class 的数组,必须删除.

html 的输出必须是这样的:

<div class="iWantThisElement">
Not Delete this one
</div>
...
...
...
...
...
<div class="Iwantthis">
Not Delete this one
</div>

我用 preg_replace 和模式尝试了很多代码,但我无法解决它。

我们如何在 php 中做到这一点?最好最快的方法?

谢谢。

div 中搜索 this class:

/<[^<]+class=[^>]+this[^>]+>[^<]+<\/div>/img

div 中搜索 this id:

/<[^<]+id=[^>]+this[^>]+>[^<]+<\/div>/img

class、id 和任何标签的最终示例:

$source = "<div..."; // your html markup
$find_word = "this";
$class_pattern = array("/<[^<]+class=[^>]+", "[^>]+>[^<]+<\/[a-z]+>/i");
$id_pattern = array("/<[^<]+id=[^>]+", "[^>]+>[^<]+<\/[a-z]+>/i");
$result = preg_replace($class_pattern[0].$find_word.$class_pattern[1], "", $source);
$result = preg_replace($id_pattern[0].$find_word.$id_pattern[1], "", $result);

演示: http://sandbox.onlinephpfunctions.com/code/2f64fae1d6cbaa0efc7e777e653097891a43113d