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 :
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
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
Exécuter un Javascript dans une page SPIP
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
Le web structuré et sa présentation
Ecrire ce qu’on veut dans SPIP
Un Editeur RSS pour votre site 1/2
Webmasters : Comment mieux se référencer ?
Qualité, centres d’intérêt et motivations des participants aux forums médicaux.
Syndication, comment s’y retrouver
La Netiquette des forums
Belles icônes pas chères !
Proposer plusieurs styles pour votre site
Etablir un questionnaire statistique en ligne
Réaliser un formulaire de contact (5/4)
Editer plusieurs fichiers de syndication 3/3
Positionnement fixe... même avec Internet Explorer !
Publication Spip : forme et typographie
Quand JavaScript est désactivé... 2/2
Contrôler l’accès d’une partie du site avec .htaccess
Javascript : n’oubliez pas Mac OS !
Créer une liste de QCM
Gestion d’une rubrique... en attendant SPIP
Editer plusieurs fichiers de syndication 1/3
Quiz en PHP 2/3
Conseils pour débuter un site web
Un lecteur RSS pour votre site 1/2
xhtml - 4 : Les entités
Comment faire migrer son site ?
Réaliser un formulaire de contact (2/4)
Réaliser un formulaire de contact (3/4)
Un serveur dédié pour les nuls
Editer plusieurs fichiers de syndication 2/3
Utilisation de la classe easyRSS
Page contact en PHP 1/3
Initiation au xhtml - 3 : Rappel sur les pointeurs internet (URI/URL)
Page Erreur 404 en PHP
Comment intégrer Snap Shots à Rapidweaver ?
Tri et Histogramme
Astuce pour les images fréquemment utilisées
Quiz en PHP 1/3
Initiation au xhtml - 2
Menu dépliant pour les rubriques
Installer un script PHP pour les nuls
Un Editeur RSS pour votre site 2/2
Soigner en ligne, un art impossible ?
Menu de navigation sans JavaScript
Quiz en PHP 3/3
Mise en place d’un forum : une décision qui doit être mûrement réfléchie
Analyser les réponses à une liste de questions
MARST - Le Moteur Automatisé de Recherche en Santé au Travail
Un lecteur RSS pour votre site 2/2
Page contact en PHP 2/3
Exécuter un Javascript dans une page SPIP
Réaliser un formulaire de contact (4/4)
Réaliser un formulaire de contact (1/4)
Initiation au xhtml - 1
Créer un forum à l’aide de phpBB
Page contact en PHP 3/3
Quand JavaScript est désactivé... 1/2
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
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 !
Des fils RSS 1.0, RSS 2.0 et Atom 1.0 pour votre site SPIPSyndication
Femiweb
Editer plusieurs fichiers de syndication 2/3
Editer plusieurs fichiers de syndication 3/3
Généralistes 2002
Editer plusieurs fichiers de syndication 1/3
Syndication, comment s’y retrouver
Comité Départemental d’Education pour la Santé des Yvelines
Atoute
Droit-médical.net
Utilisation de la classe easyRSS
Collège des Médecins Généralistes Enseignants - Université Pierre et Marie Curie
Un lecteur RSS pour votre site 1/2
Un Editeur RSS pour votre site 2/2
Un Editeur RSS pour votre site 1/2
Fédération des Acteurs de l’Alcoologie et de l’Addictologie
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
Editer plusieurs fichiers de syndication 2/3
Positionnement fixe... même avec Internet Explorer !
Proposer plusieurs styles pour votre site
Page contact en PHP 3/3
Quiz en PHP 3/3
Syndication, comment s’y retrouver
Menu de navigation sans JavaScript
Quand JavaScript est désactivé... 2/2
Page contact en PHP 1/3
Ecrire ce qu’on veut dans SPIP
Editer plusieurs fichiers de syndication 3/3
Quiz en PHP 2/3
Page contact en PHP 2/3
Quiz en PHP 1/3
Javascript : n’oubliez pas Mac OS !
Gestion d’une rubrique... en attendant SPIP
Menu dépliant pour les rubriques
Astuce pour les images fréquemment utilisées
Page Erreur 404 en PHP
Editer plusieurs fichiers de syndication 1/3
Exécuter un Javascript dans une page SPIP
Installer un script PHP pour les nuls
Quand JavaScript est désactivé... 1/2
Afficher plusieurs flux RSS/Atom sur une page
Conseils aux rédacteurs
La syndication de contenu RSS
Présentation de l’espace rédacteurs
Lire nos fichiers de syndication
Ecrire ou modifier un article
Afficher un fil RSS/Atom sur votre site 1/3
Afficher un fil RSS/Atom sur votre site 2/3
Les raccourcis typographiques
Afficher un fil RSS/Atom sur votre site 3/3
Reprendre un document Word
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
Joindre un logo à un article
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 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('&#','&#','•'); |