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

  FORUM HardWare.fr
  Programmation

  [PHP] comment transformer un long string en array ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP] comment transformer un long string en array ?

n°40204
duch
Posté le 15-06-2001 à 18:10:36  profilanswer
 

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\";" );

mood
Publicité
Posté le 15-06-2001 à 18:10:36  profilanswer
 

n°40329
shinji
Posté le 16-06-2001 à 17:20:30  profilanswer
 

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?

n°40849
duch
Posté le 19-06-2001 à 10:30:21  profilanswer
 

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

n°40921
duch
Posté le 19-06-2001 à 12:59:37  profilanswer
 

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

n°40927
youdontcar​e
Posté le 19-06-2001 à 13:06:52  profilanswer
 

? 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]

n°40928
duch
Posté le 19-06-2001 à 13:09:19  profilanswer
 

et si je fait ça :  
 
eval($montableau = XSLtransformation);
 
il ne voie pas que c'est un tableau, ça reste un string :sweat:

n°40930
duch
Posté le 19-06-2001 à 13:10:31  profilanswer
 

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

n°40933
youdontcar​e
Posté le 19-06-2001 à 13:12:52  profilanswer
 

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

n°40935
duch
Posté le 19-06-2001 à 13:14:54  profilanswer
 

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]

n°40938
duch
Posté le 19-06-2001 à 13:18:05  profilanswer
 

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...

mood
Publicité
Posté le 19-06-2001 à 13:18:05  profilanswer
 

n°40939
youdontcar​e
Posté le 19-06-2001 à 13:18:50  profilanswer
 

t'évalues quoi exactement ? ou tu veux évaluer quoi ?

n°40969
duch
Posté le 19-06-2001 à 14:14:00  profilanswer
 

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.

n°40980
FLY LM
Posté le 19-06-2001 à 14:41:52  profilanswer
 

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...) ?

n°40982
duch
Posté le 19-06-2001 à 14:46:57  profilanswer
 

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.

n°41002
youdontcar​e
Posté le 19-06-2001 à 15:48:21  profilanswer
 

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)

n°41010
FLY LM
Posté le 19-06-2001 à 16:00:24  profilanswer
 

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;" );
 
?>

n°41070
duch
Posté le 19-06-2001 à 17:30:33  profilanswer
 

bon, j'vais essayer tout ça, merci les gars, mais partez pas...
 
faut qu'j'vois si ça marche :D

n°41074
duch
Posté le 19-06-2001 à 17:34:11  profilanswer
 

bon ben la méthode de j'm'en fous marche :D comme quoi j'm'étais pris la tête pour rien :D

n°41096
youdontcar​e
Posté le 19-06-2001 à 18:02:17  profilanswer
 

:)
 
j'ai oublié un truc, remplaces eval("$evalme" ); par eval($evalme);  ... dans le premier cas il copie la string pour rien.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [PHP] comment transformer un long string en array ?

 

Sujets relatifs
PHP et MySQLdessin avec PHP marche pas
=====> communication entre PHP et MySQL <=====[php] Comment récupérer dans une variable PHP une variable JavaScript
[PHP] tite question.Pb de fichier avec formulaire PHP Javascript
[PHP] Variables d'environnement[PHP] Sauvegarder une page internet sur son disque en local
[PHP] mail(PHP) comment executer une fonction PHP stockee dans une variable?????
Plus de sujets relatifs à : [PHP] comment transformer un long string en array ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR