Problème magpierss et caratères spéciaux

Nouveau WRInaute
Bonjour,
j'ai utilisé la solution proposée par votre site pour intégrer un flux rss à une page de mon site.
Tout fonctionne et je vous remercie pour vos explications, cependant les informations s'affichent avec un losange et un point d’interrogation à l'intérieur sur chaque caractère spéciaux, apparemment il faut modifier le fichier feedparse.php mais que faut-il ajouter ?

Voici mon code:
Code:
<?php
require_once("magpierss/rss_fetch.inc");
function FeedParser($url_feed, $nb_items_affiches=5) {
$rss = fetch_rss($url_feed);
if (is_array($rss->items))  {      
$items = array_slice($rss->items, 0, $nb_items_affiches);
   $site_titre = $rss->channel["title"];
   $site_lien = $rss->channel["link"];
   $site_description = $rss->channel["description"];
   $logo_titre = $rss->image["title"];
   $logo_description = $rss->image["description"];
   $logo_url = $rss->image["url"];
   $logo_lien = $rss->image["link"];
   $html = "<span style=\"float:left;margin:5px 0 0 5px\"><a href=\"".$logo_lien."\"><img src=\"".$logo_url."\" border=\"0\" alt=\"".$logo_description."\" title=\"".$logo_titre."\"></a></span>\n";
   $html .= "<a href=\"".$site_lien."\" title=\"".$site_description."\" target=\"_blank\">".$site_titre."</a><br>\n";
   $html .= "<span style=\"font-size:10px\">".$site_description."</span><br clear=\"left\"><br>\n";
   foreach($items as $item) {
     $titre = $item["title"];
     $lien = $item["link"];
     $description = $item["description"];
     	 if (isset($item["enclosure"])) { 
  $photo = $item["enclosure"]; 
} else { 
  $photo = ""; 
}
     $date = date("d/m/y",strtotime($item["pubdate"]));
     if($photo!="")
       $html .= "<img src=\"".$photo."\" alt=\"".$titre."\" style=\"float:left;margin-right:5px\">\n";
     $html .= "<a href=\"".$lien."\" title=\"".$titre."\" target=\"_blank\">".$titre."</a><br>\n";
     $html .= "<span class=\"tiny\">".$date." - ".$description = substr("$description",0 , 47).$titre = "...";"</span><br clear=\"left\"><br>\n";
}
 return $html;
 } 
} 

?>

Bien à vous,
pipido ;)
 
WRInaute accro
Ton problème peut venir de plusieurs raisons, avec si peu d'indications, impossible de te guider.

NB: Magpie est complètement outdated, plus de mise à jour depuis le 5 novembre 2005.
Je te conseille plutôt d'utiliser SimplePie: http://simplepie.org/
 
WRInaute passionné
Si dans l'ente de la page afichée il y a le codage approprié (utf-8, iso ...) , les caractères spéciaux ne devraient plus poser de probleme. Ce n'est pas plutot dans ton template qu'il manque ce codage? Si il n'y a pas de template, il doit y avoir un codage qq part! regarde dans d'autres flux rss ou il se trouve.
 
Nouveau WRInaute
Merci à spout, longo600 et infiniclick!
Je vois avec les liens que vous m'envoyez.
je vous tiens au courant, merci pour votre aide.
à tout à l'heure :)
 
WRInaute passionné
Tu devrais obtenir la génération d'un feed avec l'élément charset renseigné (ici en utf-8, ou iso-8859-1), exemple

<!doctype HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<script language="JavaScript" src="feed://__rsrc__/__rsrc__/Articles.js"></script>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="feed://__rsrc__/__rsrc__/Main.css" title="default" type="text/css" />
</head>
 
Nouveau WRInaute
Bon voilà, il y a des choses qui fonctionnent et d'autres pas :$

Qui fonctionnent :
il y a une mise en page et les images apparaissent, cool

Qui fonctionnent pas:
- Les caractères spéciaux font tjs défaut
mon site est en utf-8 et le flux rss arrive en iso-8859-1 est-il possible d'intégrer le iso dans le code php du fichier qui gère le flux rss?


J'ai plusieurs erreurs sur ma page:

1- j'ai pourtant autorisé tout ! (777) sur mon fichier simplepie.inc
Code:
Warning: cachenews/ is not writeable. Make sure you've set the correct relative or absolute path, and that the location is server-writable. in /homez.116/itineris/www/under/simplepie.inc on line 1780

2emme alerte, dois-je déclarer ma fonction?
Code:
Fatal error: Call to undefined function FeedParser() in /homez.116/itineris/www/under/index.php on line 169

A mon avis c'est pas ultra clair, mais en fonction de vos réactions, je vais affiner :)
 
WRInaute discret
Pour ta première erreur, ce sont les droits sur le dossier cachenews qui sont incorrects.

Pour la seconde, il te dit qu'il ne trouve pas la fonction FeedParser.
 
Nouveau WRInaute
et voici le code de simplepie, mon fichier php est intitulé feedparser.php (en hommage à mapierss) :)
Code:
<?php
$fichier_xml='http://www.lemonde.fr/rss/sequence/0,2-3208,1-0,0.xml';
require 'simplepie.inc';
$feed = new SimplePie();
$feed->set_feed_url($fichier_xml);
$feed->enable_order_by_date(false);
$feed->set_cache_location('cachenews/');
$feed->init();
    if($feed->data){
        $max=$feed->get_item_quantity(5);
        for($x=0; $x<$max; $x++) {
            $item=$feed->get_item($x);
        echo "<div style=\"width: 290px; text-align: left;
                padding: 4px; background-color: #FFFFEE;
                border: 1px solid #CCCCCC; margin: 6px;\">
                <a href=\"";
        echo $item->get_permalink();
        echo "\">";
        echo utf8_decode($item->get_title());
        echo "</a><br />";
            if($enclosure=$item->get_enclosure(0)){
                   echo "<img src=\"";
                   echo $enclosure->get_link();
                   echo "\" border=\"1\" style=\"float: left;
                             margin: 4px; margin-top: 8px;\">";
            }
        echo utf8_decode($item->get_description());
        echo "</div>";
        }
 }
?>
et dans ma page index.php il y a ceci pour appeler le flux
Code:
<?php
require_once("feedparser.php");
echo FeedParser("http://www.musicinbelgium.net/pl/rss.php");
?>
 
Nouveau WRInaute
infiniclick a dit:
Pour ta première erreur, ce sont les droits sur le dossier cachenews qui sont incorrects.

Pour la seconde, il te dit qu'il ne trouve pas la fonction FeedParser.

Ok, pour le dossier cachenews! De mon côté je n'avais que le dossier "cache" que j'ai renommé, et cela fonction :) merci

pour la seconde, je nage...
où devrait elle ce situer ?
 
Nouveau WRInaute
infiniclick a dit:
Commence par commenter la ligne et dis nous ce qu'il en est.
//echo FeedParser("http://www.musicinbelgium.net/pl/rss.php");

idem >
Code:
Fatal error: Call to undefined function FeedParser() in /homez.116/itineris/www/under/index.php on line 172
j'ai inséré la ligne que tu m'as proposé dans ma page index.php comme ceci
Code:
<?php
    //echo FeedParser("http://www.musicinbelgium.net/pl/rss.php");
require_once("feedparser.php");
echo FeedParser("http://www.musicinbelgium.net/pl/rss.php");
?>
 
Nouveau WRInaute
infiniclick a dit:
Bah non, il faut remplacer celle qui te créé une erreur :mrgreen:

<?php
require_once("feedparser.php");
//echo FeedParser("http://www.musicinbelgium.net/pl/rss.php");
?>

ha oui ! hum, déso. PLUS D'ERREUR! :D

j'ai remarqué par la suite que la ligne de mon index.php
Code:
<?php
require_once("feedparser.php");
//echo FeedParser("http://www.musicinbelgium.net/pl/rss.php");
?>
n'est pas en rapport avec la ligne de mon fichier feedpaerser.php
Code:
// adresse du flux qu'on souhaite intégrer.
$fichier_xml='http://www.lemonde.fr/rss/sequence/0,2-3208,1-0,0.xml';

Merci Merci !
je vous envoi ma dernière question!
 
Nouveau WRInaute
ma dernière question :
Les caractères spéciaux font tjs défaut
Mon site est en utf-8 et le flux rss arrive en iso-8859-1
est-il possible d'intégrer l'indication de la norme iso dans le code du fichier feedparser.php ou autre part ?
C'est pour garder la norme utf-8 sur mon site.
 
Discussions similaires
Haut