Voir aussi
Dans la même rubrique :
Lire nos fichiers de syndication
Syndication, comment s’y retrouver
Afficher plusieurs flux RSS/Atom sur une page
Des fils RSS 1.0, RSS 2.0 et Atom 1.0 pour votre site SPIP
Editez vos flux avec Fil_LE 1/2
Editez vos flux avec Fil_LE 2/2
Abandonnons RSS 0.91 !
La syndication de contenu RSS
Création à distance d’un fichier de syndication
Lecteur RSS/Atom pour votre site 1/2
Lecteur RSS/Atom pour votre site 2/2
Afficher un fil RSS/Atom sur votre site 1/3
Afficher un fil RSS/Atom sur votre site 2/3
Afficher un fil RSS/Atom sur votre site 3/3
Syndication pour phpBBDu même auteur :
Suivi de vos articles
Exécuter un Javascript dans une page SPIP
Reprendre un document Word
Les Centres de santé
Quiz en PHP 1/3
Quiz en PHP 2/3
Quiz en PHP 3/3
Comité Départemental d’Education pour la Santé des Yvelines
Les sites des Médecins Maîtres-Toile
Joindre un document à un article
Placer une image dans un article
Les raccourcis typographiques
Ecrire ou modifier un article
Présentation de l’espace rédacteurs
Conseils aux rédacteurs
Page contact en PHP 3/3
Lecture des caractères spéciaux et d’éléments d’un fil RSS/Atom
Accueil du nouveau rédacteur
Installer un script PHP pour les nuls
Javascript : n’oubliez pas Mac OS !
Page contact en PHP 1/3
Page contact en PHP 2/3
Positionnement fixe... même avec Internet Explorer !
Editer plusieurs fichiers de syndication 1/3
Editer plusieurs fichiers de syndication 2/3
Editer plusieurs fichiers de syndication 3/3
Documentation sur SPIP
Ecrire ce qu’on veut dans SPIP
Utiliser les smileys
Joindre un logo à un article
Référencer un site
Quand JavaScript est désactivé... 2/2
Un Editeur RSS pour votre site 1/2
Un Editeur RSS pour votre site 2/2
Un lecteur RSS pour votre site 1/2
Un lecteur RSS pour votre site 2/2
Menu dépliant pour les rubriques
Quand JavaScript est désactivé... 1/2
Menu de navigation sans JavaScript
Astuce pour les images fréquemment utilisées
Gestion d’une rubrique... en attendant SPIP
Page Erreur 404 en PHP
Utilisation de la classe easyRSS
Proposer plusieurs styles pour votre siteMême indexation :
Technique Web
Conseils pour débuter un site web
Quiz en PHP 3/3
Initiation au xhtml - 1
Page contact en PHP 3/3
Page contact en PHP 1/3
Quiz en PHP 1/3
Réaliser un formulaire de contact (1/4)
Un Editeur RSS pour votre site 2/2
Etablir un questionnaire statistique en ligne
Quand JavaScript est désactivé... 1/2
Editer plusieurs fichiers de syndication 3/3
MARST - Le Moteur Automatisé de Recherche en Santé au Travail
xhtml - 4 : Les entités
Editer plusieurs fichiers de syndication 2/3
Qualité, centres d’intérêt et motivations des participants aux forums médicaux.
Le web structuré et sa présentation
Initiation au xhtml - 3 : Rappel sur les pointeurs internet (URI/URL)
Menu de navigation sans JavaScript
Positionnement fixe... même avec Internet Explorer !
Proposer plusieurs styles pour votre site
Quiz en PHP 2/3
La Netiquette des forums
Créer une liste de QCM
Soigner en ligne, un art impossible ?
Belles icônes pas chères !
Utilisation de la classe easyRSS
Un lecteur RSS pour votre site 1/2
Réaliser un formulaire de contact (2/4)
Un Editeur RSS pour votre site 1/2
Installer un script PHP pour les nuls
Syndication, comment s’y retrouver
Javascript : n’oubliez pas Mac OS !
Un lecteur RSS pour votre site 2/2
Editer plusieurs fichiers de syndication 1/3
Créer un forum à l’aide de phpBB
Comment faire migrer son site ?
Quand JavaScript est désactivé... 2/2
Analyser les réponses à une liste de questions
Contrôler l’accès d’une partie du site avec .htaccess
Menu dépliant pour les rubriques
Page Erreur 404 en PHP
Réaliser un formulaire de contact (5/4)
Tri et Histogramme
Un serveur dédié pour les nuls
Mise en place d’un forum : une décision qui doit être mûrement réfléchie
Réaliser un formulaire de contact (4/4)
Gestion d’une rubrique... en attendant SPIP
Publication Spip : forme et typographie
Réaliser un formulaire de contact (3/4)
Page contact en PHP 2/3
Initiation au xhtml - 2
La syndication de contenu RSS
Lire nos fichiers de syndication
Ecrire ce qu’on veut dans SPIP
Astuce pour les images fréquemment utilisées
Afficher un fil RSS/Atom sur votre site 1/3
Afficher un fil RSS/Atom sur votre site 2/3
Afficher un fil RSS/Atom sur votre site 3/3
Lecteur RSS/Atom pour votre site 1/2
Lecteur RSS/Atom pour votre site 2/2
Syndication pour phpBB
Editez vos flux avec Fil_LE 1/2
Editez vos flux avec Fil_LE 2/2
Création à distance d’un fichier de syndication
Abandonnons RSS 0.91 !
Exécuter un Javascript dans une page SPIP
Des fils RSS 1.0, RSS 2.0 et Atom 1.0 pour votre site SPIPSyndication
Droit-medical.com
Généralistes 2002
Collège des Médecins Généralistes Enseignants - Université Pierre et Marie Curie
Droit-médical.net
Atoute
Un Editeur RSS pour votre site 1/2
Un lecteur RSS pour votre site 1/2
Editer plusieurs fichiers de syndication 3/3
Fédération des Acteurs de l’Alcoologie et de l’Addictologie
Femiweb
Editer plusieurs fichiers de syndication 1/3
Editer plusieurs fichiers de syndication 2/3
Comité Départemental d’Education pour la Santé des Yvelines
Utilisation de la classe easyRSS
Un Editeur RSS pour votre site 2/2
Syndication, comment s’y retrouver
Afficher plusieurs flux RSS/Atom sur une page
La syndication de contenu RSS
Lire nos fichiers de syndication
Afficher un fil RSS/Atom sur votre site 1/3
Afficher un fil RSS/Atom sur votre site 2/3
Afficher un fil RSS/Atom sur votre site 3/3
Lecteur RSS/Atom pour votre site 1/2
Lecteur RSS/Atom pour votre site 2/2
Editez vos flux avec Fil_LE 1/2
Editez vos flux avec Fil_LE 2/2
Création à distance d’un fichier de syndication
Abandonnons RSS 0.91 !
Des fils RSS 1.0, RSS 2.0 et Atom 1.0 pour votre site SPIPSyndiquer tout le texte
Quiz en PHP 2/3
Menu de navigation sans JavaScript
Editer plusieurs fichiers de syndication 2/3
Quand JavaScript est désactivé... 2/2
Syndication, comment s’y retrouver
Gestion d’une rubrique... en attendant SPIP
Editer plusieurs fichiers de syndication 1/3
Page contact en PHP 2/3
Quiz en PHP 3/3
Page contact en PHP 3/3
Proposer plusieurs styles pour votre site
Quiz en PHP 1/3
Menu dépliant pour les rubriques
Javascript : n’oubliez pas Mac OS !
Quand JavaScript est désactivé... 1/2
Page Erreur 404 en PHP
Editer plusieurs fichiers de syndication 3/3
Page contact en PHP 1/3
Installer un script PHP pour les nuls
Positionnement fixe... même avec Internet Explorer !
Afficher plusieurs flux RSS/Atom sur une page
Conseils aux rédacteurs
La syndication de contenu RSS
Ecrire ce qu’on veut dans SPIP
Lire nos fichiers de syndication
Présentation de l’espace rédacteurs
Ecrire ou modifier un article
Astuce pour les images fréquemment utilisées
Afficher un fil RSS/Atom sur votre site 1/3
Les raccourcis typographiques
Afficher un fil RSS/Atom sur votre site 2/3
Reprendre un document Word
Afficher un fil RSS/Atom sur votre site 3/3
Lecteur RSS/Atom pour votre site 1/2
Lecteur RSS/Atom pour votre site 2/2
Placer une image dans un article
Joindre un document à un article
Editez vos flux avec Fil_LE 1/2
Editez vos flux avec Fil_LE 2/2
Joindre un logo à un article
Création à distance d’un fichier de syndication
Abandonnons RSS 0.91 !
Exécuter un Javascript dans une page SPIP
Des fils RSS 1.0, RSS 2.0 et Atom 1.0 pour votre site SPIP
Accueil
Boite à Outils
Syndication de contenu
Lecture des caractères spéciaux et d’éléments d’un fil RSS/Atom

C’est grâce à Bertrand Piret que j’ai cherché une solution à ce problème. En effet, en voulant afficher le fichier de syndication de son site Parole sans frontière sur le site du CODES 78, j’ai constaté que des phrases en arabe d’un des articles étaient remplacées par des " ??? ???".
Dans le fil RSS ces caractères sont codés sous la forme &#xxxx; (xxxx étant un nombre de 4 ou 5 chiffres). Si ces caractères sont intégrés dans du code HTML, ils seront normalement affichés par le navigateur [3]. Par contre lorsqu’on utilise une fonction PHP pour récupérer les informations d’un fil RSS ou Atom, ces caractères ne sont pas reconnus et sont remplacés par des " ?".
J’ai donc cherché une solution pour que le code &#xxxx; soit modifié avant l’action de la fonction PHP pour parser les données, puis pour reconstituer ce code pour l’affichage dans la page. Voilà ce que je propose :
$rss -> to_replace_with("&#", "@@"); |
ce remplacement transforme &#xxxx; en @@xxxx; qui est considéré comme une chaîne de caractères banale et n’est pas remplacé par " ?" [4]. Attention, pour que cela fonctionne, il faut utiliser cette fonction avant que le fil soit envoyé à la fonction de récupération des données.
Pour reconstituer les caractères, on utilise la fonction :
function clean_text($text, $encodage = '') { |
qui reconstitue la forme &#xxxx; de ces caractères spéciaux. Cette fonction est déjà présente dans les scripts décrits, c’est simplement la ligne $text = str_replace("@@","&#",$text); qui est ajoutée.
Après le principe, voici quelques exemples de son application. J’ai repris et modifié les fichiers à télécharger accompagnant les articles sur la classe rss_read :
Afficher un fil RSS/Atom sur votre site 1/3 :
exemples_modifie.zip (Ce fichier contient exemple_a_modifie.php et exemple_b_modifie.php).
Afficher un fil RSS/Atom sur votre site 2/3 :
Exemples_2_modifie.zip (Ce fichier contient exemple_c_modifie.php et exemple_d_modifie.php).
Afficher un fil RSS/Atom sur votre site 3/3 :
exemples_e_modifie.zip (Ce fichier contient exemple_e_modifie.php).
Lecteur RSS/Atom pour votre site 1/2 :
lecteur_modifie.zip (Ce fichier contient note.txt et script_modifie.txt).
Lecteur RSS/Atom pour votre site 2/2 :
Lecteur_plus_modifie.zip (Ce fichier contient note.txt et script2_modifie.txt).
La classe rss_read a beau être performante, elle ne sait pas tout lire, en particuliers certains éléments dont la mise en forme est imposée pour avoir des fichiers de syndication valides.
Par exemple,
<author><name>Karim Lounici</name><uri>http://www.mmt-fr.org/article269.html</uri></author> |
est une écriture valide pour le format Atom 1.0 pour indiquer un auteur, mais en raison des tags intriqués, rss_read ne sait pas les décoder.
La solution que je propose consiste à appliquer l’astuce décrite ci-dessus. On va la transformer en :
$avant = array('&#','•','<author><name>','</name><uri>','</uri></author>'); |
ceci aura pour conséquence de transformer l’élément auteur en :
<author>Karim Lounici - http://www.mmt-fr.org/article269.html</author> |
et çà, rss_read peut le lire :
$items[$i]['author'] aura alors pour valeur Karim Lounici - http://www.mmt-fr.org/article269.html
pour le mettre sous une forme plus élégante, on écrit :
if ($items[$i]['author']) { |
ce qui donnera dans la page : Karim Lounici
Cette astuce peut largement être adaptée pour tous les éléments non lus par rss_read.
[1] Voir Afficher un fil RSS/Atom sur votre site 1/3, 2/3, 3/3, Lecteur RSS/Atom pour votre site 1/2 et 2/2.
[2] Cet article a été modifié le 25/04/2007 pour adapter cette astuce au décodage de certains éléments.
[3] Oui... si c’est un navigateur moderne (Firefox, Mozilla, Safari...), parce qu’avec Microsoft Internet Explorer pour Mac, c’est loin d’être évident !
[4] J’ai déjà proposé dans d’autres articles cette fonction pour certains caractères posant problème (voir Lecteur RSS/Atom pour votre site 1/2 et 2/2). S’il y a plusieurs types de caractères qu’il faut transformer, on peut utiliser la forme :
$avant = array('&#','•'); |
bonjour ,
en fait ca fonctionne correctement sur http://www.allergique.org/backend-breves.php3 mais pas sur http://www.lemonde.fr/rss/sequence/0,2-3208,1-0,0.xml
En fait cela fonctionne le plus souvent, mais certains caractères sont codés autrement. Voilà ce que je propose :
$avant = array('&#','&#','•'); |