2013-10-24 44 views
0

我想从http://www.kitco.com/market/正则表达式PHP从网站获取的数据

enter image description here

我能够从世界现货价格报废数据报废以下数据(图像粉红色部分) - 亚洲/欧洲/纽约市场HTML表格下面的表使用以下..但不能够得到伦敦修复数据..我应该做什么样的变化,在下面的正则表达式,因为我尝试了很多组合,但它不工作

我的代码看起来像以下

$html= get_url_contents("http://www.kitco.com/market/"); 
//echo $html; 


preg_match_all('!Gold\s+([0-9.]+)\s+([0-9.]+)!i',$html,$matches); 

$patt = "/<td[^>]*width=['\"]68['\"][^>]*>([0-9\.]+)<\/td>\s*<td[^>]*width=['\"]68['\"][^>]*>([0-9\.]+)<\/td>/i"; 

回答

0

请不要用正则表达式解析HTML(你可以看到为什么在this必须发布)。

也就是说,您可以使用HTML解析器,例如Simple HTML DOM Parser来处理表格。看看this之前的SO帖子,以正确的方向开始。

编辑:根据您的评论,你可以尝试做这样的事情:<td bgcolor=".+?">\s*<p>\s*(.+?)\s*</p>\s*</td>。不过,我建议针对这种方法。

这将匹配并将值放入正则表达式组中,然后您可以稍后访问它们。

注意:同样根据你的评论,你提出的正则表达式也是易受影响的风格变化,所以如果他们改变列的width,你的正则表达式很可能会失败。

+0

但正则表达式很适合我..我已经解析了另一个表使用 – user580950

+1

@ user580950:我已经修改了我的答案以包含正则表达式。但是,就像我在回复中所说的,这不是(正确的)方式。 – npinti