Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP和Regex提取Div的内容_Php_Regex - Fatal编程技术网

使用PHP和Regex提取Div的内容

使用PHP和Regex提取Div的内容,php,regex,Php,Regex,我试图用PHP提取div的内容,而不依赖于类名和其他参数 我需要的是,我有多行,单行,多参数div,比如 我想得到第一节的所有内容,没有第一节 通常,我猜 <div.*>(.*)<\/div>/mU 感谢您的帮助 谢谢,下面是使用DOM解析器获取它的一种方法: 如果您确实需要正则表达式解决方案,请使用: ~<div[^>]*>(.*)</div>~is ~]*>(.*)是 并抓取捕获组#1。也许您应该使用非贪婪解决方案: &

我试图用PHP提取div的内容,而不依赖于类名和其他参数

我需要的是,我有多行,单行,多参数div,比如


我想得到第一节的所有内容,没有第一节


通常,我猜

<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>