我想从http://www.kitco.com/market/
中删除以下数据(图像中的粉红色部分)
我能够使用以下信息从世界现货价格 - 亚洲/欧洲/纽约市场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 :(得分:0)
请不要使用正则表达式解析HTML(您可以在this强制帖子中查看原因。)
话虽这么说,您可以使用HTML解析器(例如Simple HTML DOM Parser)来处理表。看一下this以前的SO帖子,开始朝着正确的方向前进。
编辑:根据您的评论,您可以尝试执行以下操作:<td bgcolor=".+?">\s*<p>\s*(.+?)\s*</p>\s*</td>
。但是,我建议 反对 这种做法。
这将匹配并将值放入正则表达式组,然后您可以在以后访问它们。
注意:另外根据您的评论,您建议的正则表达式也会受到样式更改的影响,因此如果他们更改列的width
,您的正则表达式很可能会失败。