2012-02-23 85 views
1

我试图学习如何从php页面中获取数据,我可以看到如何获取标签之间的所有内容,但有没有办法获取标签内的标签内容?是否可以嵌套preg_match?

在下面的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); 

我开始从我读什么,这是可能是想了解这个错误的或低效的方式,但任何帮助将是巨大的实现。谢谢。

+0

http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 – 2012-02-23 03:19:35

+0

这应该让你开始:http://stackoverflow.com/questions/1898905/recursive-regular-expression-to-process-nested-strings-enclosed-by-and – yoda 2012-02-23 03:19:43

+0

[你尝试过一个HTML解析器吗?](http://stackoverflow.com/questions/1732348/regex-match -open-tags-except-xhtml-self-contained-tags/1732454#1732454) – deceze 2012-02-23 03:19:51

回答

2

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

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

+0

抱歉,从未真正使用过PHP,是否像下载和添加一样简单:require_once('phpQuery-onefile.php'); – mao 2012-02-23 03:34:11

4

你试过this

+0

不,但我现在正在看,谢谢 – mao 2012-02-23 03:34:40

+0

欢迎!它是有据可查的,并且易于实施。 – dee 2012-02-23 03:38:26

+0

这简单得多。它适用于我,代码以防万一有人发现它有用:foreach($ html-> find('div [class = padding10]')as $ element); foreach($ element-> find('span [class = bold]')as $ e) echo $ e-> innertext。 '
'; – mao 2012-02-23 03:57:08

相关问题