想在使用PHP的oasis.caiso.com网站上查看价格

时间:2014-01-26 09:38:57

标签: php web-scraping

我努力从这个网站上榨取价格 http://oasis.caiso.com/mrtu-oasis/prc_hub_lmp/PRC_HUB_LMP.html 但由于价格有“$”,我似乎无法使其发挥作用。我试过了:

<?php 
$data = file_get_contents('http://oasis.caiso.com/mrtu- oasis/prc_hub_lmp/PRC_HUB_LMP.html');

$regex = "@/$(.+?)</font>@";

preg_match($regex,$data,$match);

echo $match[1];
?>

它不起作用!任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:1)

使用DOMDocument类。

<?php
$data = file_get_contents('http://oasis.caiso.com/mrtu-oasis/prc_hub_lmp/PRC_HUB_LMP.html');
$dom = new DOMDocument;
@$dom->loadHTML($data);
foreach ($dom->getElementsByTagName('font') as $tag) {

    if(strpos($tag->nodeValue,'$')!==false)
    {
        $tag->nodeValue="$".trim(str_replace('$','',$tag->nodeValue));
        $prices[]=$tag->nodeValue;
    }
}
echo "<pre>";
print_r($prices);

<强> OUTPUT :

Array
(
    [0] => $47.79842
    [1] => $47.9952
    [2] => $0.00
    [3] => $-0.19678
    [4] => $46.32017
    [5] => $47.9952
    [6] => $0.00
    [7] => $-1.67503
    [8] => $46.30577
    [9] => $47.9952
    [10] => $0.00
    [11] => $-1.68943
)

答案 1 :(得分:0)

$是正则表达式中的特殊字符,它在行尾匹配。它应该以{{1​​}}转义。

参考:http://www.php.net/manual/en/regexp.reference.anchors.php