如何通过 class 名称删除 HTML 元素

How to Remove HTML element by class name

我正在使用 phpmyadmin 更改数据库,里面有几个 html 页面,我想从所有这些页面中删除所有 <div> 和其他包含特定 classid.

示例:

案例一

<div class="undesirable">
  <div class="container">
    <div class="row">
      <div class="col1"></div> 
    </div>
   </div>
</div>

案例二

<div class="undesirable">
  <div class="container">
    <div class="row">
      <div class="col1"></div>
      <div class="col2"></div> 
    </div>
   </div>
</div>

我想删除所有包含 class="undesirable"<div>。在某些情况下,仍然有可能显示为 class="pre_undesirable",或类似的东西。

最初我想使用 regex,但由于 html 中存在变体,因此会发生代码中断,因为无法知道 <\div> 何时结束. 可能答案是 HTML 解析器,但我不明白如何使用它。有从哪里开始的指示吗?

我们可以使用 D3JS 通过 class 名称或 ID 删除或附加任何 HTML 元素。 我们可以使用 Select() 和 Selectall() 来选择 HTML 中的特定元素。如果我们想附加任何 div 标签,请使用 append('div') 为数据插入 div。

<script>
      function remove() 
         {
        d3.select(.undesirable)
          .selectAll("li")
          .exit()
          .remove()
         }

</script>

由于您正在处理 html,您可能应该使用 html 解析器并使用 xpath 搜索删除目标。为了演示,我将稍微更改一下您的 html:

$original= 
'<html><body>
<div class="undesirable">
  <div class="container">
    <div class="row">
      <div class="col1"></div> 
    </div>
   </div>
</div>
<div class="keepme">
  <div class="container">
    <div class="row">
      <div class="col1"></div>
      <div class="col2"></div> 
    </div>
   </div>
</div>

<div class="pre_undesirable">
  <div class="container">
    <div class="row">
      <div class="col1"></div>
      <div class="col2"></div> 
    </div>
   </div>
</div>
<div class="keepme">
  <div class="container">
    <div class="row">
      <div class="col1"></div>
      <div class="col2"></div> 
    </div>
   </div>
</div>
</body>
</html>
';
$HTMLDoc = new DOMDocument();
$HTMLDoc->loadHTML($original);
$xpath = new DOMXPath($HTMLDoc);

$targets = $xpath->query('//div[contains(@class,"undesirable")]');
foreach($targets as $target){
        $target->parentNode->removeChild($target);
}
echo $HTMLDoc->saveHTML();

输出应该只包含两个“keep me”<div>