我试图用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>)
型
3条答案
按热度按时间v7pvogib1#
下面是一个使用
DOM
解析器获取它的方法:字符串
如果你真的需要正则表达式解决方案,那么用途:
型
抓住第一组俘虏
af7jpaap2#
而不是
.*
,你应该使用[\s\S]*
来匹配每个字符,包括新行。下面是一个工作示例:
字符串
参见test case
另外,如果你希望标签必须是平衡的,你可以用递归
(?R)
来尝试:型
看到test case,注意它与最后一个
</div>
不匹配,因为它没有对应的开始标记。wztqucjr3#
也许你应该使用非贪婪的解决方案:
字符串