Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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 不使用DOM获取div数据_Php_Regex - Fatal编程技术网

Php 不使用DOM获取div数据

Php 不使用DOM获取div数据,php,regex,Php,Regex,可能重复: 首先让我告诉你DOM不是这个选项。 我只是有html: className">Name</div>......</div>....</div> className>Name。。。。。。。。。。 现在,我创建了一个正则表达式,如: $match_count = preg_match_all('/className\">(.*)\<\/div\>/', $page, $matches); $match\u count=p

可能重复:

首先让我告诉你DOM不是这个选项。 我只是有html:

className">Name</div>......</div>....</div>
className>Name。。。。。。。。。。
现在,我创建了一个正则表达式,如:

$match_count = preg_match_all('/className\">(.*)\<\/div\>/', $page, $matches);
$match\u count=preg\u match\u all('/className\“>(.*)\/',$page,$matches);
这对我来说似乎很好,但出于某种原因,它得到的数据比预期的要多。也就是说,它会在稍后完成一些收盘跳水。如何限制它,使其仅在第一个结束div内获取数据?

$match\u count=preg\u match\u all('/className“>(.*?/”,$page,$matches);
$match_count = preg_match_all('/className">(.*?)<\/div>/', $page, $matches);

使用非贪婪选择器
*?

改用
preg\u match
。它将停止搜索第一个匹配的模式。

此操作:

$match_count = preg_match_all('/className\">(.*)\<\/div\>/', $page, $matches);
$match\u count=preg\u match\u all('/className\“>(.*)\/',$page,$matches);

U模式修饰符将确保找到尽可能最小的匹配项,而不是最大的匹配项。

也无需转义<>和“看起来您有嵌套的
div
s。所谓“first div”是指文档中首先出现的
(以及所有内部
div
s)或者您想要第一个最内部的
div
?如果是后者,恐怕您不能仅使用正则表达式来实现。为什么DOM不是一个选项?未安装/不可用?