evaluation numerique d'une chaine de caracteres

Le
geantbrun
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Olivier Miakinen
Le #39448

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

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
Le #39444
Merci Olivier pour ta réponse et merci surtout pour la précision
concernant les précautions à prendre!
Patrick
Publicité
Poster une réponse
Anonyme