Array_push dans case

Résolu
Utilisateur anonyme - Modifié le 17 déc. 2009 à 18:50
 Utilisateur anonyme - 17 déc. 2009 à 18:50
Bonsoir,

Je voudrais faire un array_push dans une case, mais en vain :(

Voici mon code :

$tTitle = array ("");
$tArtiste = array ("");
// 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)
            {
                // On oublie la dernière balise rencontrée
                global $derniereBaliseRencontree;
        
                $derniereBaliseRencontree = "";
            }
        
            // Ma propre fonction de traitement du texte
            // qui est appelée par le "parseur"
            function fonctionTexte($parseur, $texte)
            {
                global $derniereBaliseRencontree;
                
                // Selon les cas, nous affichons le texte
                // ou nous proposons un lien
                // ATTENTION: Par défaut les noms des balises sont
                //            mises en majuscules
                                
                switch ($derniereBaliseRencontree) {
           
                 case "ARTIST":
     array_push($tArtiste,$texte);
                        break;
                        }
                  case "TITLE":
                
                        array_push($tTitle,$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, 1024)) {
                // 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);


Pourquoi mon array-Push ne se fait pas ?

Merci pour vos pistes :)

Belle soirée,

A++
A voir également:

3 réponses

syndrael Messages postés 2378 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 29 décembre 2012 19
16 déc. 2009 à 09:25
Il te manque global $derniereBaliseRencontree,$tArtiste,$tTitle;
S.
3
Hello,

C'est exactement ca :)
Merci beaucoup !

A++
0
Hello,

Encore un petit soucis, quand j'ai un apostrophe dans mon titre alors que j'ai mis un addslashes :

[2] => I Don
[3] => \'
[4] => t Care

A quoi s'est du ?

function fonctionTexte($parseur, $texte)
            {
                global $derniereBaliseRencontree,$tArtiste,$tTitle;
                         
                switch ($derniereBaliseRencontree) {
                  case "ARTIST":
           array_push($tArtiste,addslashes($texte));
                        break;
                  case "TITLE":
                        array_push($tTitle,addslashes($texte));
                        break;
                }        
            }



Belle soirée,

A++
0