正则表达式PHP从网站获取数据

时间:2013-10-24 04:46:47

标签: php regex

我想从http://www.kitco.com/market/

中删除以下数据(图像中的粉红色部分)

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";

1 个答案:

答案 0 :(得分:0)

请不要使用正则表达式解析HTML(您可以在this强制帖子中查看原因。)

话虽这么说,您可以使用HTML解析器(例如Simple HTML DOM Parser)来处理表。看一下this以前的SO帖子,开始朝着正确的方向前进。

编辑:根据您的评论,您可以尝试执行以下操作:<td bgcolor=".+?">\s*<p>\s*(.+?)\s*</p>\s*</td>。但是,我建议 反对 这种做法。

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

注意:另外根据您的评论,您建议的正则表达式也会受到样式更改的影响,因此如果他们更改列的width,您的正则表达式很可能会失败。