2012-04-23 24 views
1

私は(ECB)、欧州中央銀行のcurrentcy為替レートフィードを使用しようとしています http://www.ecb.int/stats/eurofxref/eurofxref-daily.xmlPHPの解析為替レートのフィードXML

私:allow_url_fopen = Onが設定されていることを確認しました。例えば

http://www.ecb.int/stats/exchange/eurofxref/html/index.en.html

、私が使用されるが、それは何をエコーし​​ないと、$ XMLオブジェクトは常に空であるようです。

<?php 
    //This is aPHP(5)script example on how eurofxref-daily.xml can be parsed 
    //Read eurofxref-daily.xml file in memory 
    //For the next command you will need the config option allow_url_fopen=On (default) 
    $XML=simplexml_load_file("http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml"); 
    //the file is updated daily between 2.15 p.m. and 3.00 p.m. CET 

    foreach($XML->Cube->Cube->Cube as $rate){ 
     //Output the value of 1EUR for a currency code 
     echo '1&euro;='.$rate["rate"].' '.$rate["currency"].'<br/>'; 
     //-------------------------------------------------- 
     //Here you can add your code for inserting 
     //$rate["rate"] and $rate["currency"] into your database 
     //-------------------------------------------------- 
    } 
?> 

更新:

私は私のテスト環境でプロキシの背後午前として、私はこれを試してみましたが、それでも私は、XMLを読むために得ることはありません: 関数カール($のURL){ $ CH = curl_init(); curl_setopt($ ch、CURLOPT_URL、$ url);
curl_setopt($ ch、CURLOPT_RETURNTRANSFER、1);
curl_close($ ch);
return curl_exec($ ch); }

$address = urlencode($address); 
$data = curl("http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml"); 
$XML = simplexml_load_file($data); 

var_dump($XML); -> returns boolean false 

私を助けてください。ありがとう!

+0

var_dump($ XML)とは何ですか? – noli

+0

あなたはエラー報告をしていますか、それは何を言いますか? PHP5を使用していて、 'php.ini'でXMLサポートが有効になっていますか?スクリプトは私のローカルコンピュータから機能しますので、あなたの側や銀行の終わりに一時的なネットワークの問題がありますか? –

+0

私のシステムで動作します。あなたは 'allow_url_fopen = On'を持っているので、' allow_url_include = On'を追加してみてください。 –

答えて

2

php.iniに関連する設定が見つかりませんでした。 SimpleXMLをサポートし、cURLsupportを有効にしている場合はphpinfo()にチェックしてください。 (あなたはそれらを使用しているので特にSimpleXMLを持っている必要があり、それはfalseを返すので、機能が不足していると不平を言うことはありません)。

プロキシが問題になることがあります。答えはthisthisです。 cURLを使用すると、問題への回答になる可能性があります。


foud hereの1つです。

$url = file_get_contents('http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml'); 
$xml = new SimpleXMLElement($url) ; 

//file put contents - same as fopen, wrote and close 
//need to output "asXML" - simple xml returns an object based upon the raw xml 
file_put_contents(dirname(__FILE__)."/loc.xml", $xml->asXML()); 

foreach($xml->Cube->Cube->Cube as $rate){ 
    echo '1&euro;='.$rate["rate"].' '.$rate["currency"].'<br/>'; 
} 
+0

ありがとうございます。私はそれをすべて有効にしました。私はcURLを試みましたが、まだXMLを読むことはできません。私もローカルコピーを保存し、$ XML = simplexml_load_file( 'test.xml')を試しました。とvar_dump($ XML)にあります。私はまだブールfalseを取得します。わかりません。 – Veni

+0

@Veni代替回避策が見つかりました。本当にあなたがローカルファイルでさえも読むことができないこの問題の原因を知りません。任意のxmlファイルを読むことができますか?あなたのファイルのエンコーディングは正しいですか(ローカルファイルはutf8ファイルとして保存されますが、utf8 '<?xml version =" 1.0 "encoding =" UTF-8 "?>)としてファイル内にのみ宣言されていますか?私は非常に困惑しています... –

+0

はい、私のローカルファイルはUTF-8として保存されます。わかりません。明らかに私のセットアップではローカルな問題です。どのように私はこれを解決することができます任意のアイデア?ありがとう! – Veni