[réglé] Problème avec eval() - Version imprimable +- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org) +-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38) +--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51) +--- Sujet : [réglé] Problème avec eval() (/showthread.php?tid=1777) Pages :
1
2
|
[réglé] Problème avec eval() - Seals - 18-09-2007 Bonsoir, j'ai un problème avec eval(). Par exemple : Code PHP :
c'est bon, y'a pas de soucies. En revanche : Code PHP :
Par exemple si $calc contien un problème de parenthèses, genre 1 parenthèse en trop, ça retourne une erreur : Parse error: syntax error, unexpected '(' in /mnt/145/sdb/a/8//calcul.php(14) : eval()'d code on line 1 Ce que je voudrais, c'est savoir si la variable contien un problème de parenthèse, et si oui j'affiche une erreur au lieu de me prendre une erreur php dans la tronche ^^ Quelqu'un vois comment faire ? j'ai essayé ainsi : Code PHP :
Mais qu'il y est un problème de parenthèse ou non, ça m'affiche toujours 'erreur'. Merci d'avance RE: Problème avec eval() - denisc - 18-09-2007 L'erreur est sur la ligne de $calc=... Tu dois utiliser une chaine de caractère, sinon le code est interprété et se plante si tu as une erreur de parenthèses! RE: Problème avec eval() - Seals - 18-09-2007 Mais je récupère des nombres envoyé par $_POST, comment je peu transphormer ça en chaine de caractères ? edit : voilà le code en entié : Code PHP :
ça m'affiche 'erreur' à chaque fois. RE: Problème avec eval() - Bob le Pointu - 19-09-2007 Si j'ai bien compris, c'est la variable $expr qui doit être évaluée, et non pas $var. L'erreur serait donc logique. RE: Problème avec eval() - Seals - 19-09-2007 Nan, là j'ai retapé vite fait le code ... et j'ai inversé les deux variables. Mais je ne demande pas comment ou pourquoi il y a une erreur, je demande comment savoir si l'eval contien une erreur de calcule, et si oui, afficher un message en concéquence. RE: Problème avec eval() - Bob le Pointu - 19-09-2007 Tu peux afficher la variable à évaluer afin d'évaluer si la syntaxe PHP est correcte. Sinon, au niveau erreur de calcul, dans le premier message il y a : $calc = (15*6) - 6)); Soit il y a des parenthèses en trop, soit tu veux faire le calcul plus tard grâce à eval(). Dans ce cas il faut en effet la transformer en chaîne de caractère : $calc = '(15*6) - 6))'; RE: Problème avec eval() - Seals - 19-09-2007 Merci ^^ Mais le problème, c'est que si je transphorme en chaine de caractères, eval() ne calculera plus car pour lui ce ne sera plus un calcul, si ? RE: Problème avec eval() - Bob le Pointu - 19-09-2007 J'ai un peu de mal à tout cerner, mais j'essaie quand même. Code : eval('$x = 5+3*12;'); revient à écrire Code : $x = 5+3*12; C'était ça la question ? RE: Problème avec eval() - Seals - 19-09-2007 Nan je veux dire que, si je fait eval('$x = 5+3*12;'); ça ne peu pas fonctionner. Car eval() ne peu calculer une chaine de caractères ? Je vien d'essayer, j'ai fait un calcule simple 5*5 et j'ai cette erreur : Parse error: syntax error, unexpected $end in /mnt/145/sdb/a/8//calcul.php(14) : eval()'d code on line 1 Warning: Cannot modify header information - headers already sent by (output started at /mnt/145/sdb/a/8/jvfr/calcul.php(14) : eval()'d code:1) in /mnt/145/sdb/a/8//calcul.php on line 15 RE: Problème avec eval() - Bob le Pointu - 19-09-2007 eval() ne fait pas de calcul, juste une évaluation sur une chaîne de caractères, c'est à dire qu'il va considérer la chaîne passée en paramètre comme une instruction PHP, il faut donc prendre soin de vérifier que cette est une instruction PHP correcte. eval(5*5) n'a aucun sens, de même que eval('5*5'). En revanche, eval('$x = 5*5;') en a, car $x = 5*5; est une instruction valide. |