在给定的页面上有一堆元素:
<div class="some class"> <-- here is anything, other divs, even other divs with
the same class, but I need to match right on closing tag for this particular
opening tag --></div>
在给定的页面上有一堆元素:
<div class="some class"> <-- here is anything, other divs, even other divs with
the same class, but I need to match right on closing tag for this particular
opening tag --></div>
不要使用正则表达式来解析 HTML。改用DOMDocument并为自己省去所有的麻烦。
Stack Overflow 上的相关阅读:
正则表达式描述了对正则语言的操作。HTML 不是常规语言。我准备打赌您可以使用所谓的“递归正则表达式”来做到这一点,因为它们不是真正的正则表达式并且不限于正则语言。我准备好打赌,无论如何你最好还是解析它。
最简单的方法(不是最好的,但最容易用几行代码编写)是保持内部 div 的计数。每当你遇到一个 div 标签时,计数。每当您遇到结束 div 标记时,如果计数不为零,或者您找到了完整的元素,则删除计数。每当您遇到文件末尾时,有人没有正确关闭他们的 div。
如果您可以依赖格式良好的代码(如果不能,那么您有两个问题......)或者准备在非良好的情况下出错,那么使用 XML 解析器会更容易。形成输入。
唯一强大的解决方案是解析 HTML,正则表达式不能在所有情况下解决这个问题。
事实上,浏览器通常是非常宽容的,它们甚至可以处理诸如丢失之类的错误
</p>
标签。所以处理任意页面实际上是相当棘手的。
如果您正在处理自己生成的页面,那么也许您可以编写一些特殊情况的正则表达式。否则,您可能需要寻找真正的解析器,例如this。(我自己从未使用过它,但它很可能是您需要的。)