Bonjour à tous,
J'ai récupérer un script GPL pour recuperer les infos des flux RSS.
Le script est composé de deux fichiers :
rss.php
<?php
error_reporting(E_ALL ^ E_NOTICE);
function render_news($feed_url, $showdetail, $headlinestyle, $detailstyle) {
global $show_detail, $headline_style, $detail_style, $max, $count, $insideitem, $insideimage;
$insideitem=false;
$insideimage=false;
$count = 0;
$show_detail = $showdetail;
$headline_style = $headlinestyle;
$detail_style = $detailstyle;
$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "characterData");
$fp = @fopen($feed_url,"r");
// or die("Error reading RSS data.");
if ($fp) {
while ($data = fread($fp, 4096))
xml_parse($xml_parser, $data, feof($fp))
or die(sprintf("XML error: %s at line %d",
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
fclose($fp);
} else {
echo '<span class="'. $detail_style .'">Syndicated content not available</span>';
}
// Free up memory used by the XML parser
xml_parser_free($xml_parser);
}
function startElement($parser, $name, $attrs) {
global $insideitem, $tag, $title, $description, $link, $image, $insideimage;
if ($insideitem || $insideimage) {
$tag = $name;
}
if ($name == "ITEM" ) {
$insideitem = true;
}
if ($name == "IMAGE") {
$insideimage = true;
}
}
function endElement($parser, $name) {
global $insideitem, $tag, $title, $description, $link, $image, $insideimage, $show_detail, $headline_style, $detail_style, $count, $max;
if ($name == "URL")
{
$insideimage=false;
$image="";
} else if ($name == "ITEM" && $count < $max) {
$count++;
printf('<a href="%s" class="'. $headline_style .'" target="_blank"><b>%s</b></a><br>',trim($link),trim($title));
if ($show_detail)
printf('<span class="'. $detail_style .'">%s</span><br>',trim($description));
else {
echo "<br>";
printf('<span class="'. $detail_style .'">%s</span><br>',trim($description));
echo "<br>";
}
$title = "";
$description = "";
$link = "";
$insideitem = false;
} else if ($count >= $max) {
$title = "";
$description = "";
$link = "";
$insideitem = false;
}
}
function characterData($parser, $data) {
global $insideitem, $tag, $title, $description, $link, $image, $insideimage;
if ($insideimage) {
switch ($tag) {
case "URL":
$image .= $data;
break;
}
}
if ($insideitem ) {
switch ($tag) {
case "TITLE":
$title .= $data;
break;
case "DESCRIPTION":
$description .= $data;
break;
case "LINK":
if (!is_string($link)) $link="";
$link .= $data;
break;
}
}
}
?>
et un code pour l'executer
<?php
include("rss.php");
//$headline_style = 'news';
$headline_style = '';
$description_style = 'Arial,';
$feed_url = 'http://www.mon.url-vers/lefichier/rss.xml';
$show_detail = false;
$insideitem = false;
$tag = "";
$title = "";
$description = "";
$link = "";
$image = "";
$insideimage = false;
$max = 3;
$count = 0;
render_news($feed_url, $showdetail, $headlinestyle, $detailstyle) ;
?>
J'ai plusieurs soucis....
1 Le premier c'est que pour pouvoir afficher la description de chaque article je suis obliger de forcer une boucle if : (normalement dans le else je n'ai rien, et je ne sait pourquoi a chaque fois je tombe dans l'else)
[B]if/B ($show_detail)
[B]printf('<span class="'. $detail_style .'">%s</span><br>',trim($description));/B
[B]else/B {
echo "<br>";
[B]printf('<span class="'. $detail_style .'">%s</span><br>',trim($description));/B
echo "<br>";
Comment eviter ce bouclage? Pourquoi la description ne s'affiche pas?
2 Mon second problème est due aux accents :
[QUOTE] données - Sécurité - sûreté
/QUOTE impossible de comprendre le texte ! ma page php contenant le code d'execution est pourtant en [B]charset=iso-8859-1
/B
Comment changer le type iso du resultat obtenu ??
3 Mon troisième problème c'est qu'en affichant les lien rss et la description, en bas du flux "
http://rss.feedsportal.com/c/681/f/8820/index.rss" apparaissent les images "partager cet article" et "bookmark" .
Comment supprimer cette affichage d'image?
Je voudrais par la suite en arriver à un resultat comme http://www.secuser.com/actu/index.htm.
Soft, sans erreur d'accent -utf-8/iso-8859-1, et avec une belle mise en forme... :roll:
Est-ce possible en PHP ??
En vous remerciant d'avance pour votre aide et vos éclaircissement !!!
Configuration: Windows XP
Firefox 2.0.0.15