【发布时间】:2021-05-11 06:43:05
【问题描述】:
我正在尝试使用 PHP 提取 div 的内容,独立于类名和其他参数。
我需要的是,我有多行、单行、多参数的div比如
<div class="my-class additional-class"><div class="my-class2">
<div class="my-class"></div>
</div>
</div>
我想得到第一个 div 的所有内容,没有第一个 div。
<div class="my-class2">
<div class="my-class"></div>
</div>
通常,我猜
<div.*>(.*)<\/div>/mU
应该有效,但我不确定为什么无效。
我遇到过this one
(?s)(?<=<div\sclass="test">\n).*(?=<\/div>)
它适用于类名test,但我无法使其工作
(?s)(?<=<div.*>\n)(.*)(?=<\/div>)
感谢任何帮助。
谢谢,
【问题讨论】:
-
更好地使用
DOM解析器 -
DOM 解析器是我的第二个选择。我认为在这件事上它不会像正则表达式一样好。
-
你为什么不认为它在这件事上会像正则表达式一样好用呢?考虑到正则表达式通常不足以处理 html 语言?并且考虑到 DOM 解析器 能够做到这一点?
-
DOM 解析器不起作用,在某些情况下需要时间来找出正确的编码。您需要弄清楚
mb_detect_encoding和mb_convert_encoding。还有一些用户不在他们的服务器上安装 XML。 -
错误的欺骗,因为这个问题要求仅查找最外层
div的内容,并且没有提供如下答案的答案。