Bonjour,

Afin d'afficher mon flux rss dans la page d'acceuil de mon site, j'utilise le script suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
<?php
    $fichier = "rss.xml";
 
    // Ma propre fonction de traitement des balises ouvrantes
    function fonctionBaliseOuvrante($parseur, $nomBalise, $tableauAttributs)
    {
        // En fait... nous nous conteterons de mémoriser le nom de la balise
        // afin d'en tenir compte dans la fonction "fonctionTexte"
 
        global $derniereBaliseRencontree;
 
        $derniereBaliseRencontree = $nomBalise;
    }
 
    // Ma propre fonction de traitement des balises fermantes
    function fonctionBaliseFermante($parseur, $nomBalise)
    {
        global $derniereBaliseRencontree;
        global $titre;
        global $lien;
		global $description;
 
        switch ($nomBalise) {
            case "CHANNEL" :  
                $titre = "";
                $lien = "";
                break;
            case "ITEM" :
                // nous quittons un bloc item
                // nous pouvons afficher le titre de l'article
                echo "- <a href=\"$lien\">$titre</a> : $description<br />";
                // et on oublie
                $titre = "";
                $lien = "";
				$desciption="";
                break;
        }
 
        // On oublie la dernière balise rencontrée
        // et tout le reste
        $derniereBaliseRencontree = "";
    }
 
    // Ma propre fonction de traitement du texte
    // qui est appelée par le "parseur"
    function fonctionTexte($parseur, $texte)
    {
        global $derniereBaliseRencontree;
        global $titre;
        global $lien;
		global $description;
 
        // Nous n'affichons pas le texte ou lien directement
        // nous attendrons de rencontrer la balise fermante
        // et ainsi d'avoir tous les élements avant l'affichage.
        // ATTENTION: Par défaut les noms des balises sont
        //            mises en majuscules
 
        switch ($derniereBaliseRencontree) {
            case "TITLE": 
                $titre = $texte;
                break;
            case "LINK":
                $lien = $texte;
                break;
			case "DESCRIPTION":
				$description=$texte;
				break;
        }         
    }
 
    // Création du parseur XML
    $parseurXML = xml_parser_create();
 
    // Je précise le nom des fonctions à appeler
    // lorsque des balises ouvrantes ou fermantes sont rencontrées
    xml_set_element_handler($parseurXML, "fonctionBaliseOuvrante"
                                       , "fonctionBaliseFermante");
 
    // Je précise le nom de la fonction à appeler
    // lorsque du texte est rencontré
    xml_set_character_data_handler($parseurXML, "fonctionTexte");
 
    // Ouverture du fichier
    $fp = fopen($fichier, "r");
    if (!$fp) die("Impossible d'ouvrir le fichier XML");
 
    // Lecture ligne par ligne
    while ( $ligneXML = fgets($fp, 4096)) {
        // Analyse de la ligne
        // REM: feof($fp) retourne TRUE s'il s'agit de la dernière
        //      ligne du fichier.
        xml_parse($parseurXML, $ligneXML, feof($fp)) or
            die("Erreur XML");
    }
 
    xml_parser_free($parseurXML);
    fclose($fp);
?>
J'ai testé le scripte avec le fichier XML suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
	<channel>
    	<title>JCBodyboard.com</title>
    	<link>http://www.jcbodyboard.com/</link>
    	<description>Le site 100% bodyboard</description>
		<item>
    		<title>Nouvelle version de JCBodyboard.com</title>
    		<link>http://www.jcbodyboard.com/</link>  
    		<description>Une interface plus agréable et plus pratique, ainsi que plus de contenu : nouveau catalogue des boards, nouveau guide des spots.</description>
		<pubDate>Mon, 01 Oct 2007 17:28:47 GMT</pubDate>
		</item>  
  </channel> 
</rss>
J'ai un problème pour afficher le text contenu dans la balise Description de l'item : le text est tronqué et ce qui est affiché est :
éable et plus pratique, ainsi que plus de contenu : nouveau catalogue des boards, nouveau guide des spots.
J'ai testé avec un echo la fonction "fonctionTexte" et la variable global $Description contient bien tout le text. Par contre, dans la fonction "fonctionBaliseFermante" qui gère l'écriture, il en manque une partie. Je ne comprend pas d'ou vient le problème !!

Merci d'avance,