Salve a tutti, è possibile leggere un file RSS XML da una fonte esterna al sito tramite un parser XML in una pagina PHP?
Grazie
Saluti
Salve a tutti, è possibile leggere un file RSS XML da una fonte esterna al sito tramite un parser XML in una pagina PHP?
Grazie
Saluti
Per leggere un file remoto puoi utilizzare fsockopen o cURL e poi passare il contenuto al parser.
Però il file deve essere su un server presente sulla whitelist o sbloccare la whitelist.
Ciao Andrea non sapevo ci fosse una white list come si fa a sbloccarla? Ma poi... non riesco a parsare direttamente il file con simplexml? A cosa servono quelle classi che mi hai menzionato?
Per sbloccare la whitelist vai Pannello di Controllo -> AlterSito -> Risorse & Upgrade -> Server to server e procedi con l'identificazione.
Puoi leggere anche qui: [PHP 5] Problema con simpleXML
Ecco un esempio:
Codice PHP:
<?php
$url = "http://www...........";
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_URL, $url);
$out = curl_exec($ch);
curl_close($ch);
$xml = new SimpleXMLElement($out);
...
...
...
?>
Ultima modifica di andreafallico : 10-10-2009 alle ore 23.05.04
Per quanto quello che ti sta indicando andreafallico sia assolutamente corretto, di sbattone atroce, all'atto pratico, si tratta.
RSS e ATOM (che ad ogni fine pratico è RSS3) sono generati da un infinità di sistemi diversi e seguono tre o quattro diverse versioni di standard, alcune abbastanza vetuste.
Oltretutto le idosincrasie dei server altervista rendono oltremodo più convoluto lo sviluppo di una soluzione definitiva.
Suggerirei, quindi, per risparmiarci in sanità mentale:
- simplepie (http://simplepie.org/)
- magpie (http://magpierss.sourceforge.net/)
con una spiccata preferenza per il primo, che è meglio mantenuto, più vivacemente aggiornato, e l'ho testato con altervista e funziona.
Ultima modifica di zingus : 12-10-2009 alle ore 01.22.41
Ho provato il seguente codice ma non sembra funzionare qualcuno può indicarmi dove sbaglio?
<?php
$url = "http://excelvba.altervista.org/Forum/VBA.xml";
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_URL, $url);
$out = curl_exec($ch);
curl_close($ch);
$xml = new SimpleXMLElement($out);
foreach ($xml->item as $item) {
echo $item->title, '<br />';
}
?>
Deve essere così:
Codice PHP:
<?php
$url = "http://excelvba.altervista.org/Forum/VBA.xml";
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_URL, $url);
$out = curl_exec($ch);
curl_close($ch);
$xml = new SimpleXMLElement($out);
foreach ($xml->xpath('//item') as $item) {
echo $item->title.'<br />';
}
?>
Grazie 1000 Andrea! Funziona perfettamente!!!!!!!!!!!!!
l'ho provato anch'io ma in locale funziona mentre quando lo carico via ftp su Altervista no.
mi da il seguente errore:
Fatal error: Cannot instantiate non-existent class: simplexmlelement in /membri/meteomontebello/readwdfd.php on line 20
fatto... pualcosa è cambiato ma sempre errore da, te lo posto:
Fatal error: Uncaught exception 'Exception' with message 'String could not be parsed as XML' in /membri/meteomontebello/readwdfd.php:20 Stack trace: #0 /membri/meteomontebello/readwdfd.php(20): SimpleXMLElement->__construct('') #1 {main} thrown in /membri/meteomontebello/readwdfd.php on line 20
La whitelist è sbloccata?
Poi aggiungi echo così:
e scrivi il risultato.Codice:$url = "http://www..........."; $ch = curl_init(); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_URL, $url); echo $out = curl_exec($ch); curl_close($ch); $xml = new SimpleXMLElement($out);
la whitelist mi sembra di averla sbloccata dal pannello di controllo, mente l'echo che dici tu di mettere non fa altro che estrarmi tutti i dati... a me ne servono solo alcuni.
non ci capisco più nulla.
Io ti avevo scritto di inserire echo perchè ti restituiva quell'errore, per vedere se leggeva il file.
Risolto grazie. colpa della mia incompetenza.
Grazie Alberto