2012-02-01 17 views
1

ローカルでうまく動作するスクリプトを構築しました。私は今、そのスクリプトをプロキシの背後にあるサーバーに移しました。私はいくつかの問題に遭遇しました。ここでSimplexml_load_fileプロキシに起因する問題

コードです:

$yahooXML = simplexml_load_file('http://query.yahooapis.com/v1/public/yql?q=select+*%20from%20yahoo.finance.xchange%20where%20pair%20in%20(%22'.$from.''.$to.'%22)&diagnostics=true&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys'); 

    print_r($yahooXML); 
    die(); 

私は、ストリームをオープンに失敗し、I/Oの警告を取得しています。これを使用して外部エンティティのエラーをロードできませんでした。

私はcURLを使用してデータを読み込み、simplexmlで解析しましたが、これが可能かどうかはわかりませんでしたか?

編集:

は私がでプロキシオプションを追加したようにも失敗したCURLでページをロードし、それを修正しました。今私はXMLでこれをロードする必要がありますか?

function curl($url){ 
     $ch = curl_init(); 
     curl_setopt($ch, CURLOPT_URL, $url); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
     curl_setopt($ch, CURLOPT_PROXY, 'proxysg.uwe.ac.uk:8080'); 
     $data = curl_exec($ch); 
     curl_close($ch); 
     return $data; 
    } 


    $feed = 'http://query.yahooapis.com/v1/public/yql?q=select+*%20from%20yahoo.finance.xchange%20where%20pair%20in%20(%22'.$from.''.$to.'%22)&diagnostics=true&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys'; 
    $data = curl($feed); 

    echo $data; 
    die(); 
+0

xmlを別々に取り出して調べてみてください。外部に定義されている文字エンティティがそこにあるように聞こえ、その外部定義を読み込むことができます。 –

+0

どうすればいいですか?私はちょうどページをつかむfile_get_contentsを使用してみましたが、私はストリームのエラーを開くに失敗しています。 (エンティティのエラーはなくなった) – tctc91

+0

私の進歩に伴いOPが更新されました – tctc91

答えて

0

XMLファイルを持っていて、それが適切なXMLだと確認したら、あなたが持っているものに応じてsimplexml_load_string()またはsimplexml_load_file()からPHPにロードすることができます。

あなたの$データVaRは、その後も形成XML/wの文字列の場合:

$xml = simplexml_load_string($data); 
print_r($xml); 

がうまく動作するはずです。もちろん、今では単純なxmlオブジェクトを持っています。これは通常のsimplexml関数のいずれかで動作します。

関連する問題