用于关闭标记的preg_replace仅适用于一个实例


preg_replace for closing tags only works for one instance

我在数据库表中存储了以下内容。。。

<section id="introduction">
  <h2 id="a1">Introduction</h2>
  <div class="Article collapse in article" id="b1">
    (Some text)
  </div>
</section>
<section id="history">
  <h2 id="a2">History</h2>
  <div class="Article collapse in article" id="b2">
    (Some text)
  </div>
</section>

我想在每个div的结束标记之前插入一个元素('XXX')。。。

<section id="introduction">
  <h2 id="a1">Introduction</h2>
  <div class="Article collapse in article" id="b1">
    (Some text)
    XXX
  </div>
</section>

当然,我必须确保我的脚本忽略嵌套的div。以下脚本几乎有效:

 $Content = preg_replace('/<div class="Article collapse in article" id="(.*?)">([^`]*?)<'/div>/', '<div class="Article collapse in article" id="$1">$2XXX</div>', $Content);

事实上,它确实有效——但只有一次;它仅在第一部分的末尾插入XXX。此外,我发现它不会忽略嵌套的div。

有人知道我该怎么解决这些问题吗?

尝试simplehtmldom。这会让这些事情对你来说容易得多。