comment transformer un long string en array ? [PHP] - Programmation
Marsh Posté le 16-06-2001 à 17:20:30
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?
Marsh Posté le 19-06-2001 à 10:30:21
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
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
Marsh Posté le 19-06-2001 à 12:59:37
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
Marsh Posté le 19-06-2001 à 13:06:52
? 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]
Marsh Posté le 19-06-2001 à 13:09:19
et si je fait ça :
eval($montableau = XSLtransformation);
il ne voie pas que c'est un tableau, ça reste un string
Marsh Posté le 19-06-2001 à 13:10:31
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
Marsh Posté le 19-06-2001 à 13:12:52
j'ai édité mon message car j'avais oublié le \ au début. reessaye.
Marsh Posté le 19-06-2001 à 13:14:54
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
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 , doit y avoir un blème de retour chariot ou autre...
[edit]--Message édité par duch--[/edit]
Marsh Posté le 19-06-2001 à 13:18:05
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...
Marsh Posté le 19-06-2001 à 14:14:00
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.
Marsh Posté le 19-06-2001 à 14:41:52
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...) ?
Marsh Posté le 19-06-2001 à 14:46:57
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.
Marsh Posté le 19-06-2001 à 15:48:21
wep tt à l'heure j'étais totalement à l'ouest
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
mais bon, ça devrait marcher avec ça (ça roule chez moi)
Marsh Posté le 19-06-2001 à 16:00:24
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;" );
?>
Marsh Posté le 19-06-2001 à 17:30:33
bon, j'vais essayer tout ça, merci les gars, mais partez pas...
faut qu'j'vois si ça marche
Marsh Posté le 19-06-2001 à 17:34:11
bon ben la méthode de j'm'en fous marche comme quoi j'm'étais pris la tête pour rien
Marsh Posté le 19-06-2001 à 18:02:17
j'ai oublié un truc, remplaces eval("$evalme" ); par eval($evalme); ... dans le premier cas il copie la string pour rien.
Marsh Posté le 15-06-2001 à 18:10:36
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 , 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\";" );