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不是一个选项?未安装/不可用?