Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2763 connectés 

 


Dernière réponse
Sujet : [PHP] comment transformer un long string en array ?
youdontcare :)
 
j'ai oublié un truc, remplaces eval("$evalme" ); par eval($evalme);  ... dans le premier cas il copie la string pour rien.

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
youdontcare :)
 
j'ai oublié un truc, remplaces eval("$evalme" ); par eval($evalme);  ... dans le premier cas il copie la string pour rien.
duch bon ben la méthode de j'm'en fous marche :D comme quoi j'm'étais pris la tête pour rien :D
duch bon, j'vais essayer tout ça, merci les gars, mais partez pas...
 
faut qu'j'vois si ça marche :D
FLY LM Un chtit exemple qui fonctionne :
 
<?php
 
$string = '"fruits"  => array(
    "id" => array(1,2,3),
    "desc" => array(banane,pomme,poire)
    )';
     
$string = 'array('.$string.')';
 
 
eval("\$fruits = $string;" );
 
?>
youdontcare wep tt à l'heure j'étais totalement à l'ouest :D
 
bon, j'ai php4, ça marche.
 
 $evalme = '$graph = array (  
     "titre" => "PIB selon population",  
     "liste" => array (  
                 
       "PIB" => array (  
                         
             "groupe" => array (  
                                                 
               "1999" => array (  
                 "nom" => array ("J","F","M","A","M","J","J","A","S","O","N","D" ),  
                 "val" => array (54,54,-54,0,54,54,54,54,54,54,54,54)  
               ),  
               "2000" => array (  
                 "nom" => array ("J","F","M","A","M","J","J","A","S","O","N","D" ),  
                 "val" => array (54,54,-54,0,54,54,54,54,54,54,54,54)  
               )  
             )  
                                         
           ),  
       "PNB" => array (  
                         
           "valeur" => array (  
             "nom" => array ("I","II","III","IV","I","II","III","IV" ),  
             "val" => array (54,54,54,54,54,54,54,54)  
           )  
           )  
         )  
 
 ); ';
 
eval("$evalme" );
var_dump($graph);
 
 
et hop, j'ai ton tableau.
je sais pas comment tu passes ta chaîne à eval, mais mal, certainement. si tu déclares une string entre doubles quotes " ... " les variables à l'intérieur sont évaluées. en singles quotes ' ... ', non.
 
donc si tu faisais un truc genre $xsloutput = "$graph = array"; puis eval($xsloutput) ça ne marchait pas car il évaluait 'graph' dans la première string.
 
ah moins que ce soit pas ça du tout :D  
 
mais bon, ça devrait marcher avec ça (ça roule chez moi)
duch Bon soit c'est moi qui m'exprime mal, soit y'a un blème quelque part, la chaine que je veux évaluer c'est TOUT!!!
 
ok?
 
comme vous pouvez le voir c'est un tableau, en théorie car pour l'instant ce n'est qu'un string et moi je veux le transformer en tableau. Point barre
 
en gros je veux évaluer une portion de code qui a été générée par autre chose que php et qui la définition de mon tableau.
FLY LM Y a un truc qui doit m'échapper mais bon,
 
->Ca, c'est ta chaine qui t'ennuie :
 
"PNB" => array (  
    "valeur" => array (  
        "nom" => array ("I","II","III","IV","I","II","III","IV" ),  
        "val" => array (54,6,15,564,4656,3645,54,021,54,21,54)  
     )  
)  
 
-> Tu peux affecter cette chaine à une variable ?
 
$pnb = '"PNB" => array (  
    "valeur" => array (  
        "nom" => array ("I","II","III","IV","I","II","III","IV" ),  
        "val" => array (54,6,15,564,4656,3645,54,021,54,21,54)  
     )  
)';
 
$pnb = array($pnb);
 
La ca marche, non (enfin, c'est la même chose que ton code PHP qui tourne...) ?
duch bah en fait c'est simple, ce que je veux évaluer c'est la loooooongue chaine que tu vois au post précedent. J'aimerais la transformer en un array, c'est out. Sachant qu'elle a déjà la tronche d'un array.
youdontcare t'évalues quoi exactement ? ou tu veux évaluer quoi ?
duch le code, c'est ça :
 
 
 $graph = array (
                "titre" => "PIB selon population",
                "liste" => array (
                 
                        "PIB" => array (
                         
                                                "groupe" => array (
                                                 
                                                        "1999" => array (
                                                                "nom" => array ("J","F","M","A","M","J","J","A","S","O","N","D" ),
                                                                "val" => array (54,54,-54,0,54,54,54,54,54,54,54,54)
                                                        ),
                                                        "2000" => array (
                                                                "nom" => array ("J","F","M","A","M","J","J","A","S","O","N","D" ),
                                                                "val" => array (54,54,-54,0,54,54,54,54,54,54,54,54)
                                                        )
                                                )
                                         
                                        ),
                        "PNB" => array (
                         
                                        "valeur" => array (
                                                "nom" => array ("I","II","III","IV","I","II","III","IV" ),
                                                "val" => array (54,54,54,54,54,54,54,54)
                                        )
                                        )
                                )
 
);
 
 
et ça ça marche nickel qd tu le mets direct dans le fichier php...
duch Parse error: parse error in /home/sites/home/web/oreilly/graph.php(22) : eval()'d code on line 3
 
remarque, c'est plus en line1 mais en line3 :D
 
ce qui voudrais dire que le problème viens du code à évalué, mais c'est marrant car j'ai fais un copier-coller du code renvoyé direct dans le script et il est valide :gun:, doit y avoir un blème de retour chariot ou autre...

 

[edit]--Message édité par duch--[/edit]

youdontcare j'ai édité mon message car j'avais oublié le \ au début. reessaye.
duch

youdontcare a écrit a écrit :

? le '\' est utilisé pour coder des caractères.
\n = retour à la ligne
\t = tab
\" = " dans une string définie comme " .... "
\' = ' dans une string définie comme ' .... '
et du coup pour déclarer un \, c'est \\
\\ = \
 
donc ton eval devrait être eval("$montableau = \"XSLTransformation\";" );




 
ça donne ça : Parse error: parse error in /home/sites/home/web/oreilly/graph.php(22) : eval()'d code on line 1

duch et si je fait ça :  
 
eval($montableau = XSLtransformation);
 
il ne voie pas que c'est un tableau, ça reste un string :sweat:
youdontcare ? le '\' est utilisé pour coder des caractères.
\n = retour à la ligne
\t = tab
\" = " dans une string définie comme " .... "
\' = ' dans une string définie comme ' .... '
et du coup pour déclarer un \, c'est \\
\\ = \
 
donc ton eval devrait être eval("\$montableau = \"XSLTransformation\";" );

 

[edit]--Message édité par youdontcare--[/edit]

duch bon mon eval c'est ça :  
 
eval("\$montableau = "\XSLtransformation\";" );"
 
et ça donne ça :
 
Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /home/sites/home/web/oreilly/graph.php on line 22
 
Parse error: parse error in /home/sites/home/web/oreilly/graph.php on line 22
duch j'vais vérifier pour la faute de frappe mais j'crois pas, là j'suis sous windows, donc il faut que je rebbot sous linux :gun:
 
sinon j'ai pas trop envie d'utiliser explode puisque cette chaine est exactement celle qu'il faudrait utiliser pour créer un grand tableau. Mais j'comprends rien à la syntaxe de eval en php, c'est tordu :D
shinji c'est une faute de frappe ou pas le "eval("\$montableau = "\onstring\";" );" . C'est pas longstring ?
 Sinon essaye avec explode (coupe une chaîne selon un séparateur et crée un tableau avec les éléments entre séparateur?
duch la question peut paraitre débile, mais j'ai pô trouver... voici le string à transformer :  
 
comme le copier-coller ne marche pas bien sur KDE :gun:, j'en retape un bout :  
 
 
"PNB" => array (
    "valeur" => array (
        "nom" => array ("I","II","III","IV","I","II","III","IV" ),
        "val" => array (54,6,15,564,4656,3645,54,021,54,21,54)
     )
)
 
 
voilà ça c'est ch'ti bout
 
en fait c'est le résultat d'un parser XSL, comme vous pouvez le voir c'est exactement le format utiliser pour déclarer un tableau, donc j'mettais dit qu'avec eval ça allais marcher, et ben non. Ou alors j'me suis planter dans la syntaxe du eval (faut dire que c'est un peu bizarre comme syntaxe)
 
eval("\$montableau = "\onstring\";" );

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)