2009-03-29 11 views
11

İnternette buna benzer bazı sorular gördüm, hiçbiri cevapsız.Uzak bir xml sayfası file_get_contents ile yükleniyor()

Uzak bir XML sayfasının kaynağını bir dizeye döndürmek istiyorum. uzak XML sayfası, bu soruya amaçları için, geçerli: Düzenli webbrowser olarak

http://www.test.com/foo.xml 

, ben sayfayı görüntüleyebilir ve kaynak bir XML belgesidir. Ancak, file_get_contents('http://www.test.com/foo.xml')'u kullandığımda, karşılık gelen URL'ye sahip bir dize döndürür.

XML bileşenini almak için var mı? File_get_contents kullanıyor ya da kullanmıyor, sadece işe yarayacak bir şey umrumda değil.

+0

Bu soruya bakın: http://stackoverflow.com/questions/692962/how-to-use-php-to-get-a-webpage-into-a-variable/ –

cevap

14

Bunun çalışması için sunucunuzda allow_url_fopen ayarlanmış olması gerekir.

sizin yok, o zaman yerine bu işlevi kullanabilirsiniz:

<?php 
function curl_get_file_contents($URL) 
    { 
     $c = curl_init(); 
     curl_setopt($c, CURLOPT_RETURNTRANSFER, 1); 
     curl_setopt($c, CURLOPT_URL, $URL); 
     $contents = curl_exec($c); 
     curl_close($c); 

     if ($contents) return $contents; 
      else return FALSE; 
    } 
?> 

here ödünç.

+0

Yerine koyma kesin değil - Bu işlevler PHP'nin cURL etkin olarak derlenmiş olmasını gerektirir. Fopen sarıcılar devre dışı bırakıldıysa, cURL işlevselliği de muhtemelen devre dışı bırakılır. Güvenli tarafta olmak için fsockopen() işlevini kullanmak daha iyidir. –

+1

Fopen sarmalayıcıları devre dışı bırakılmış ancak cURL içermeyen bir çok evsahibine girdim, bu yüzden de tam olarak bir değişiklik değil, güzel bir çözüm olabilir. – Seb

+0

İade ifadesi için üçlü bir ifadeyi tercih ediyorum, bunun gibi: 'return ($ content)? $ content: false; ' – Nolwennig

13

Bu garip görünüyor. File_get_contents() diğer siteler için geçerli olan herhangi bir veriyi döndürüyor mu (sadece XML değil)? Bir URL sadece the fopen-wrappers etkinleştirilmişse (dosya adı varsayılan olarak) dosya adı parametresi olarak kullanılabilir.

Alınan XML'yi daha sonra işleyeceğinizi tahmin ediyorum - daha sonra doğrudan simplexml_load _file() öğesini kullanarak SimpleXml içine yükleyebilmeniz gerekir.

XML dosyalarını okumak için SimpleXML kullanmanızı öneririm, kullanımı çok kolay.

İlgili konular