使用XML feed中的preg_match

时间:2012-05-27 22:27:54

标签: php xml preg-match

我正试图了解preg_match,但我无法用正则表达式选择我想要的东西。

我正在使用这里找到的XML源:http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml

我想找到一种货币及其价值。它作为一个数组打印,所以我很困惑如何做到这一点。我需要以某种方式循环吗?即使我这样做,我仍然没有找到preg_match部分。

<?
$xml = simplexml_load_file('http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml');
//print_r($xml);

preg_match('/ USD \= \(([0-9\.\,]+)\)$/',$xml,$match);

echo $match[1];
echo $match[2];

?>

任何帮助将不胜感激!

编辑 - 我试图让PHP网站上的示例使用我的链接工作,但我遇到了一堆错误。这就是我所拥有的

<?

$string = simplexml_load_file('http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml');

$xml = new SimpleXMLElement($string);

$result = $xml->xpath('b/c');

while(list( , $node) = each($result)) {
   echo 'b/c: ',$node,"\n";
}
?>

2 个答案:

答案 0 :(得分:2)

您正在使用SimpleXML库,因此您可以使用xpath function

更简单的解决方案是遵循(this)描述:

$xml = simplexml_load_file('http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml');

foreach($xml->Cube->Cube->Cube as $rate){
  if ($rate["currency"] == 'WANTED CURRENCY') {
    echo $rate["rate"].' '.$rate["currency"].'<br/>';
  }
}

答案 1 :(得分:1)

如果你想使用正则表达式,你可以试试这个表达式吗?

USD' rate='(.*)'

我喜欢用这个网站来帮助我表达我的意思: http://gskinner.com/RegExr/

在这种情况下,我使用file_get_contents获取了xml的内容,将它们粘贴到此站点的框中,然后使用页面顶部的栏开始制作表达式。在您键入时,您会自动查看下面的框中是否有任何匹配项。