.1. Introduction | 0.1. Résumé | ||
.0.2 Abstract | 0.3. Mots-clefs | ||
.2. Changement de sujet } | A. B. |
Graphique des phrases dans Hamlet Tableau des tirades dans Hamlet |
|
.3. Continuité du discours } | C. D. |
Graphique des phrases, Terre des hommes Tableau des paragraphes de Terre des hommes |
|
.4. Autres figures | E. | Graphique des phrases dans Pilote de guerre | |
.4.1 Constance | F. | Tableau sur la continuïté, Pilote de guerre | |
.4.2 Déclin | G. | Tableau sur le déclin pour Pilote de guerre | |
.4.3 Accroissement | H. | Tableau sur l'accroissement, Pilote de guerre | |
.4.4 Chute | I. | Tableau sur la chute pour Pilote de guerre | |
.4.5 Superposition | J. | Tableau sur la superposition, Pilote de guerre | |
.5. Application d’un nuage de bulles aux mots-outils | K. | Graphique sur les mots-outils, Le Petit Prince | |
.6. Conclusion | |||
.7. Une bibliographie indicative sur le longueur des phrases |
.A. | Graphique en secteur du volume de l'œuvre |
.B. | Graphique du volume de l'œuvre avec Citadelle |
.C. | Tableau du relevé des occurrences pour l'étude |
.D. | Tableau du relevé des occurrences dans Frantext |
.A. Mots commençant par e | |
.B. Prénoms, pays et communes fr. | .F. Caractères spéciaux |
.C. Abréviations | .G. Interjections |
.D. Mots-outils et assimilés | .H. Dictionnaire des catégories |
.E. Mots composés | .I. Dictionnaire des noms propres |
Les formats RSS et ATOM sont les plus simples des spécifications de la norme XML. Leur rôle consiste à publier l’information d’un site, et tous les blogs génèrent ce format. Le nombre de balises contenant l’information est de moins d’une dizaine et l’entête est limité aussi à une dizaine de ligne. Ce format est donc lisible en code source d’un coup d’oeil. Comme tous les fichiers XML sa norme n’en est pas moins rigoureuse. La coexistence de deux formats assez proches, RSS et ATOM, alourdit la démarche d’appropriation par un programme extérieur, ce qui est leur fonction première. Une nette majorité des sites utilise RSS ou propose ATOM en second. Un même programme peut opérer sur les deux formats, voir inclure toutes les variantes comme l’accroissement du type de balise ou les formats spécifiques comme les podcasts. L’autre difficulté provient lors du non-respect des normes, la plus fréquente étant l’absence ou la mauvais formatage de la balise <pubDate> qui indique la date de publication de l’article ou l'absence partielle de <description>, problème que l'on trouve dans FeedBurner, qui est un site qui reformate et redistribue les flux.
Le parcours puis le stockage des balises XML dans une page RSS peut s’opérer de plusieurs façons en PHP. Nous en retiendrons quatre :
- le parcours mot à mot ;
- les expressions régulières ;
- le module spécifique, ici simpleXML ;
- le hachage par caractères.
Une cinquième méthode repose sur l’insertion d’une balise <style> qui appelle un fichier XSL, à l’intérieur même de la page RSS, affichée ainsi modifiée dans une balise <iframe>. L’insertion s’opère en JavaScript à l’aide de l’instruction document.createElement. Cette méthode ne permet pas de retrouver les informations mais de les remettre en page. Il ressort de ces quatre essais d’extraction que la deuxième, celle des expressions régulières, est la plus appropriée, parce que la plus courte et la plus fiable.
Une première méthode consiste à scinder le contenu texte du fichier en un tableau avec explode puis à le parcourir, forme à forme, en retenant le nom des balises XML. L’on peut ainsi utiliser ce type de fonction, pour les flux RSS. Une deuxième possibilité, plus courte, consiste à se servir des expressions régulières pour isoler tout ce qui se trouve entre deux balises.
La variable $page est le fichier lu en format chaîne. La variable $tableau est un array où sera stockée chaque zone de caractères de la parenthèse, que l'on peut restituer dans une boucle. Dans celle-ci le paramètre [0] rend l'ensemble de la capture, tandis que [1] reproduit la capture de la parenthèse.
Une des difficultés récurrentes est d'ignorer les sauts de ligne de la page HTML, normalement résolue par l'option #s, équivalent de PCRE_DOTALL. À compléter à l'aide de str_replace en éliminant les caractères d'échappement /n /r /t. L'option #m, équivalent de PCRE_MULTILINE. sert toujours à éviter le problème des sauts de ligne, en poursuivant la recherche au-delà.
L’expression ne reprend pas le signe de fermeture de balise >, afin d'inclure celle du type <link href=". Un nettoyage du corpus est donc nécessaire pour fermer les balises comportant des attributs.
Une troisème solution est d'employer simpleXML en PHP 5. Si ce module récupère tout le contenu d'une balise XML avec facilité, il commence à peiner dès lors que la dite balise se charge d'attributs. Il convient probablement de paramétrer les instructions, sans savoir forcément quelle syntaxe va adopter la page XML explorée. Un autre tracas provient du contenu de la balise XML, parfois criblé de balises HTML variées, alors qu'une parfaite lisibilité impliquerait leur absence. Beaucoup d'hébergeurs de blogs reproduisent les balises de l'article dans le flux.
Quatrième solution : un découpage par suppression du texte précédant, avec pour point de repère le début et fin de balise. La page est découpée et revient à sa valeur initiale pour une balise d'un autre type (dc:date puis summary...). Une objection à ce découpage est que la quantité de types doit correspondre : s'il y a quatre dc:date il doit y avoir quatre summary. Ce qui semble, a priori incontournable pour les RSS, est trompeur car il existe une balise title dans l’entête, d'où la nécessité de la renommer ou de tronquer l’entête avant de soumettre le reste de la page. Le principe est donc d'hacher le texte position par position et s’assurer ainsi d'englober les balises HTML et les sauts de lignes, afin de retravailler ce contenu une fois isolé.
B. Possibilité IV : Extraction du contenu d’une balise XMLLa fonction reconnaît le début d'une balise, c'est-à-dire <balise... , il faut donc modifier le fichier en amont s'il contient des intitulés semblables : <item> et <items>, comme en RSS 2.0. Une modication de la balise <title> pour <letitre> en début de fonction, car celle-ci n'est parfois pas reconnue.
Le découpage de la page avec comme point de repère la balise se révèle une méthode plus sûre (solution deux avec les expressions régulières) pour maîtriser les étapes de capture, plus sommaire que de la scinder en mots (solution un) ou de la découper par balise (solution quatre). Une expression régulière précise apparaît stable et fiable sur une page RSS fortement parasitée par un contenu HTML chaotique, pour peu qu'elle soit un RSS valide.
La lecture d'une page RSS distante s'établit à l'aide de la librairie cURL en PHP 4 ou 5. Elle permet d'inclure des paramètres et de respecter certaines sécurités. Elle est plus sûre que l'instruction fopen, avec laquelle elle peut être complétementaire si cURL échoue.
Une fois la page ouverte et passée en variable, les expressions régulières permettent d’isoler chaque contenu de balise. Les étapes consistent en un premier temps à retrancher à la page l'entête, de façon à ne laisser que les balises <item>, récupérées avec preg_match_all. Puis à isoler chaque contenu <item> avec preg_match, et associer chaque contenu de ces principales balises <title> <pubDate> <link> et <description> à une variable. Il suffit d'étendre la liste pour récupérer toutes les balises potentielles <author> <media>...
Ce code opère en deux étapes de récupération de façon à traiter l'intérieur d'une balise <item> l'une après l'autre, ceci en cas de disparité comme l'absence d'une balise, ou de code à l'intérieur d'une balise qui pourrait en perturber le rendu. Ébauche d’appropriation, ne sont pas retenues les balises ouvertes avec attributs, du type <link href= ., qu'il suffit de changer en aval.
Le langage PHP II.3.3. Les programmes de nivellement de caractères à encodages multiples en PHP |
La page d’accueil Le sommaire des pages |
|
Imprimer |
Rédaction
/ Publication : 19.04.2010
Révision : 29.05.2012
http://cadrat.saynete.net2003 - 2022 |