file_get_contents
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?
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.
le 09/06/2007 à 22:47
Sly
merci de la réponse aussi rapide mais comment je m'y prend?
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.
le 10/06/2007 à 00:26
Sly
ok mais j'y suis pas arriver malheuresement :(
Qu'as tu fais pour le moment ? Montre nous ton code sur le wall.
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...
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)
Ecrire un message
Votre message vient d'être créé avec succès.
BB-Code
Pour insérer une URL clickable
Pour insérer une adresse E-mail
Pour annoter
Pour écrire du code
Pour faire un lien vers une fonction PHP
Pour écrire du texte préformaté
Pour écrire du texte en gras
Pour écrire du texte en italique
Pour écrire du texte souligné
Pour écrire du texte barré
Pour écrire un titre principal
Pour écrire un titre secondaire
Pour écrire une liste
Smiley
:bond:
:boxe:
:bsmile:
:bump:
:clap:
:coeur:
:cool:
:cry:
:eek:
:evil:
:fleur:
:fou2:
:fou:
:grin:
:grrr:
:hammer:
:hippy:
:hum:
:idee2:
:idee:
:kdo:
:king:
:ko:
:lol:
:love2:
:love:
:mad:
:maitre:
:noel:
:oops:
:raa:
:razz:
:roll:
:sad:
:skull:
:smile:
:timide:
:trink:
:vice:
:vomi:
:wink:
:zzz: