我有一个简单的问题,我没有找到答案。
我有这个简单的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>
我希望有一条规则可以删除所有类或 id 包含特定单词或单词的元素。例如,我想删除类或ids用这些词:
itemx,xxitemsxx,deleteThisOneToo,删除
所以,我们可以有这样一个数组:
$array = array("item","delete");
以及任何元素(如h2
,div
,span
等),其中包含 id 或,必须删除。
那个html的输出必须是这样的:
<div class="iWantThisElement">
Not Delete this one
</div>
...
...
...
...
...
<div class="Iwantthis">
Not Delete this one
</div>
我用preg_replace和模式尝试了很多代码但我无法解决它。
我们怎么能在php中做到这一点?用最好最快的方式?
感谢。
答案 0 :(得分:0)
在this
课程中搜索div
:
/<[^<]+class=[^>]+this[^>]+>[^<]+<\/div>/img
在this
id:
div
/<[^<]+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