file_get_contents

Répondre
Sly
le 09/06/2007 à 22:26
Sly
Bonjour

j'aimerait pourvoir récupérer les infos de quelques lignes dun flux rss

http://www.sasradio.net/radio/live_audio/current_track_mediabox404_rss.php

en utilisant la fonction file_get_contents.

Quelqu'un a une idée?
LA GLOBULE
le 09/06/2007 à 22:45
LA GLOBULE
Oui, récupère le contenu du flux avec file_get_contents, puis écrit un parseur XML pour récupérer les informations.

Ou alors, tu peux le faire avec des expressions régulières.
Sly
le 09/06/2007 à 22:47
Sly
merci de la réponse aussi rapide mais comment je m'y prend?
LA GLOBULE
le 09/06/2007 à 22:57
LA GLOBULE
Et bien tu dois utiliser les fonctions XML de PHP.
PHP propose de nombreuses fonctions pour manipuler les fichiers XML (tu peux les lister en allant sur la doc PHP).

Pour un parseur de flux RSS, tu peux utiliser la fonction xml_parse_into_struct qui te suffira largement.
Sly
le 10/06/2007 à 02:29
Sly
a la base javai utiliser la fonction file() qui lit la page dans des tableau
<?php

$lines = file ('http://www.sasradio.net/radio/live_audio/current_track_mediabox404_rss.php');

// Affiche toutes les lignes du tableau comme code HTML, avec les numéros de ligne
foreach ($lines as $line_num => $line) {
echo 'Ligne No <strong>' . $line_num . '</strong> : ' . htmlspecialchars($line) . '<br />'."\n";
}
?>


et ensuite je voulai récuperer kelke ligne et utiliser du javascript pour lactualiser ! mais le problem je sais pas comment récuper une ligne en particulier du tableau .

Donc j'ai suivi ta méthode avec du xml :

<?
$file="http://www.sasradio.net/radio/live_audio/current_track_mediabox404_rss.php";

$xml_parser = xml_parser_create();

$handle = fopen($file, "rb");
$contents = '';
while (!feof($handle)) {
$data .= fread($handle, 8192);
}
fclose($handle);

xml_parse_into_struct($xml_parser, $data, $vals, $index);
xml_parser_free($xml_parser);

$params = array();
$level = array();
foreach ($vals as $xml_elem) {
if ($xml_elem['type'] == 'open') {
if (array_key_exists('attributes',$xml_elem)) {
list($level[$xml_elem['level']],$extra) = array_values($xml_elem['attributes']);
} else {
$level[$xml_elem['level']] = $xml_elem['tag'];
}
}
if ($xml_elem['type'] == 'complete') {
$start_level = 1;
$php_stmt = '$params';
while($start_level < $xml_elem['level']) {
$php_stmt .= '[$level['.$start_level.']]';
$start_level++;
}
$php_stmt .= '[$xml_elem[\'tag\']] = $xml_elem[\'value\'];';
eval($php_stmt);
}
}

echo "<pre>";
print_r ($params);
echo "</pre>";
?>


mais je n'obtient que linfo sur le titre jouer actuellemen et pas les 3 dernier titre...
LA GLOBULE
le 10/06/2007 à 13:06
LA GLOBULE
Tu peux faire ainsi :

<?php
$file="http://www.sasradio.net/radio/live_audio/current_track_mediabox404_rss.php";

$ch = curl_init($file);
if ($ch) {
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data = curl_exec($ch);
curl_close($ch);
}
else die('Récupération impossible du flux');

$xml_parser = xml_parser_create();
xml_parse_into_struct($xml_parser, $data, $vals, $index);
xml_parser_free($xml_parser);

$retour = array();

foreach ($vals AS $tag) {
if ($tag['type'] == 'complete') {
if ($tag['tag'] == 'TITLE' && $tag['level'] == 4) {
$retour[] = $tag['value'];
}
}
}

array_shift($retour);

print_r ($retour);
?>


(ma partie avec du curl n'est pas nécéssaire pour toi : j'en ai juste besoin pour récupérer le contenu du flux, car chez moi, je ne peux pas faire un fopen sur un fichier distant, donc cette partie ne t'intéresse pas)
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours