Oui, Polou, syntaxe error car tu as perdu l'antislash dans la bataille: c'est eval( "\$test = $fight;" ); que j'ai proposé (sans antislash, $test sera remplacé par sa valeur dans l'eval, et donnera un null = 10 + 0 * 10)
Quand tu fais un eval, le mieux est de créer une variable intermédiaire contenant le code à evaluer, puis d'évaluer cette variable. Cela permet d'afficher le code ou de le faire parser par PHP pour le comprendre:
Test: http://tests.reinom.com/php/eval-token.php (forcément moins lisible que si XDebug était utilisé!)
Quand tu fais un eval, le mieux est de créer une variable intermédiaire contenant le code à evaluer, puis d'évaluer cette variable. Cela permet d'afficher le code ou de le faire parser par PHP pour le comprendre:
<?php
$A = 10;
$B = 0;
$C = 5;
$fight = '$A + $B * $C';
$code1 = "\$test1 = $fight;";
$code2 = "\$test2 = \"$fight\";";
eval($code1);
eval($code2);
var_dump(array(
"Code1" => array(
"Evaled code" => $code1,
"Tokenized code" => array_map(function ($token) { return is_array($token) ? token_name($token[0]) . ': ' . $token[1] : $token; }, token_get_all("<?php $code1 ?>")),
"Test value" => $test1
),
"Code2" => array(
"Evaled code" => $code2,
"Tokenized code" => array_map(function ($token) { return is_array($token) ? token_name($token[0]) . ': ' . $token[1] : $token; }, token_get_all("<?php $code2 ?>")),
"Test value" => $test2
)
));
Test: http://tests.reinom.com/php/eval-token.php (forcément moins lisible que si XDebug était utilisé!)