【问题标题】:Regex PHP to get data from a website正则表达式 PHP 从网站获取数据
【发布时间】:2013-10-24 04:46:46
【问题描述】:

我想从http://www.kitco.com/market/ 中删除以下数据(图像中的粉红色部分)

我能够使用以下方法从该表下方的 The World Spot Price - Asia/Europe/NYmarkets HTML Table 中删除数据.. 但无法获取 London Fix 数据.. 我应该在正则表达式中进行哪些更改下面我尝试了很多组合,但它不起作用

我的代码如下所示

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

【问题讨论】:

    标签: php regex


    【解决方案1】:

    请不要使用正则表达式解析 HTML(您可以在 this 必填帖子中了解原因)。

    话虽如此,您可以使用 HTML 解析器,例如 Simple HTML DOM Parser 来处理表格。看看 this 以前的 SO 帖子,以朝着正确的方向开始。

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

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

    注意:同样根据您的评论,您提出的正则表达式也容易发生样式更改,因此如果他们更改列的width,您的正则表达式很可能会失败。

    【讨论】:

    • 但是正则表达式对我来说很好用..我已经用它解析了另一个表
    • @user580950:我已经修改了我的答案以包含一个正则表达式。然而,正如我在回复中所说,这不是(正确的)方法。
    猜你喜欢
    • 1970-01-01
    • 2021-12-30
    • 1970-01-01
    • 2016-01-28
    • 1970-01-01
    • 1970-01-01
    • 2010-10-25
    • 2011-03-27
    • 1970-01-01
    相关资源
    最近更新 更多