Discussion:
evaluation numerique d'une chaine de caracteres
(trop ancien pour répondre)
geantbrun
2007-12-11 22:33:07 UTC
Permalink
Bonjour,
Quelqu'un saurait-il me dire s'il existe une façon en PHP d'évaluer
une expression telle "2*5+4" ?
Je m'attendrais à un résultat égal à 14 dans l'exemple ci-dessus. Une
méthode possible serait d'invoquer le calculateur bc (sous unix) mais
je me demandais s'il existait une façon propre à PHP de faire ce genre
de choses.
Merci,
Patrick
Olivier Miakinen
2007-12-11 22:47:12 UTC
Permalink
Post by geantbrun
Quelqu'un saurait-il me dire s'il existe une façon en PHP d'évaluer
une expression telle "2*5+4" ?
Oui, mais très dangereuse si l'expression vient de l'extérieur.

http://fr.php.net/eval
Post by geantbrun
Je m'attendrais à un résultat égal à 14 dans l'exemple ci-dessus. Une
méthode possible serait d'invoquer le calculateur bc (sous unix) mais
je me demandais s'il existait une façon propre à PHP de faire ce genre
de choses.
Ceci a des chances de fonctionner :

<?php
$formule = "2*5+4";
eval('$variable = ' . $formule . ';');*
echo "$formule = $variable";
?>

Bien entendu, si $formule (provenant de l'extérieur) contient par
exemple "system('rm -rf /')" tu n'auras plus qu'à réinstaller une
sauvegarde complète après avoir exécuté ce code... Cela dit, si tu
vérifies que tous les caractères de la chaîne sont dans [-+*/0-9()],
c'est déjà moins risqué.
geantbrun
2007-12-12 23:54:12 UTC
Permalink
Merci Olivier pour ta réponse et merci surtout pour la précision
concernant les précautions à prendre!
Patrick

Continuer la lecture sur narkive:
Loading...