Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

evaluation numerique d'une chaine de caracteres

2 réponses
Avatar
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

2 réponses

Avatar
Olivier Miakinen

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é.

Avatar
geantbrun
Merci Olivier pour ta réponse et merci surtout pour la précision
concernant les précautions à prendre!
Patrick