我正试图了解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";
}
?>
答案 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的内容,将它们粘贴到此站点的框中,然后使用页面顶部的栏开始制作表达式。在您键入时,您会自动查看下面的框中是否有任何匹配项。