我努力从这个网站上榨取价格 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];
?>
它不起作用!任何帮助将不胜感激!
答案 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