0

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";
}
?>
4

2 に答える 2

2

SimpleXMLライブラリを使用しているため、 xpath関数を使用できます

より簡単な解決策は、(この)説明に従うことです:

$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/>';
  }
}
于 2012-05-27T22:30:53.193 に答える
1

正規表現を使用したい場合は、この式を試してみてください。

USD' rate='(.*)'

私は自分の表現を手伝うときにこのウェブサイトを使うのが好きです:http: //gskinner.com/RegExr/

この場合、file_get_contentsを使用してxmlのコンテンツを取得し、このサイトのボックスに貼り付けて、ページ上部のバーを使用して式の作成を開始しました。入力すると、下のボックスに一致するものがあるかどうかが自動的に表示されます。

于 2012-05-27T22:37:50.537 に答える