嵌套的preg_match可能吗?

时间:2012-02-23 03:15:07

标签: php preg-match

我正在尝试学习如何使用php从页面中获取数据,我可以看到如何在标记之间获取所有内容,但有没有办法在标记内获取标记内容?

在下面的html中,我如何访问其中一个粗体跨度的内容,例如第二个?

<html>
<div class="padding10">
<span class="bold"></span>
<span class="bold"></span>
<span class="bold"></span>
<span class="bold"></span>
</div>
</html>

我尝试了以下内容,它允许我获取padding10 div的内容,但我不知道如何进一步获得大胆的跨度。我尝试的一切都行不通。

//gets all
$file_string = file_get_contents('http://www.test.com/index.html');

//gets all in padding10 div
preg_match('/<div class="padding10">(.*)<\/div>/si', $file_string, $padding_10);

//gets all bold spans on padding10 div??
preg_match_all('/<span class="bold">(.*)<\/span>/i', $padding_10[1], $spans_10);

我开始意识到,从我正在阅读的内容来看,这可能是一种错误或低效的方式,但任何帮助都会很棒。感谢。

2 个答案:

答案 0 :(得分:4)

你试过this吗?

答案 1 :(得分:2)

也许phpQuery可以提供帮助?

“基于jQuery JavaScript库的服务器端,可链接,CSS3选择器驱动的文档对象模型(DOM)API。”这将允许您从解析的HTML文档中选择内容。这可能比“手动”执行正则表达式更适合HTML解析/遍历。

http://code.google.com/p/phpquery/