使用PHP和Regex提取Div的内容
我试图用PHP提取div的内容,而不依赖于类名和其他参数 我需要的是,我有多行,单行,多参数div,比如使用PHP和Regex提取Div的内容,php,regex,Php,Regex,我试图用PHP提取div的内容,而不依赖于类名和其他参数 我需要的是,我有多行,单行,多参数div,比如 我想得到第一节的所有内容,没有第一节 通常,我猜 <div.*>(.*)<\/div>/mU 感谢您的帮助 谢谢,下面是使用DOM解析器获取它的一种方法: 如果您确实需要正则表达式解决方案,请使用: ~<div[^>]*>(.*)</div>~is ~]*>(.*)是 并抓取捕获组#1。也许您应该使用非贪婪解决方案: &
我想得到第一节的所有内容,没有第一节
通常,我猜
<div.*>(.*)<\/div>/mU
感谢您的帮助
谢谢,下面是使用
DOM
解析器获取它的一种方法:
如果您确实需要正则表达式解决方案,请使用:
~<div[^>]*>(.*)</div>~is
~]*>(.*)是
并抓取捕获组#1。也许您应该使用非贪婪解决方案:
<div.*?>(.*)</div>
(*)
您应该使用[\s\s]*
来匹配每个字符,包括新行,而不是*
下面是一个工作示例:
<div.*?>([\s\S]*)<\/div>
请参阅,注意它与最后一个
不匹配,因为它没有相应的开始标记。最好使用DOM
parserDOM解析器是我的第二个选项。我不认为它在这件事上会像regex一样有效。为什么你不认为它在这件事上会像regex一样有效呢?考虑到正则表达式通常不足以处理html语言?考虑到DOM解析器能够做到这一点,DOM解析器无法工作,在某些情况下需要时间来找出正确的编码。您需要计算出mb\u检测\u编码
和mb\u转换\u编码
。另外,一些用户没有在他们的服务器上安装XML。这个问题要求查找最外层的div
的内容,这是一个错误的dupe,没有下面提供的答案。是的,这正是我想要的。我不知道为什么我想不起来:)谢谢哇,我不知道?R
,谢谢。这很有效:)
<div.*?>(.*)</div>
<div.*?>([\s\S]*)<\/div>
<div.*?>((?:(?!<\/?div)[\s\S]|(?R))*)<\/div>