Une fonction PHP qui calcule ?

Eléphanteau du PHP | 37 Messages

28 juil. 2020, 16:18

Bonjour,

Je suis à la recherche, vaine jusqu'ici, d'une fonction PHP qui permette de calculer le résultat d'une chaine.

Par exemple :
$chaine="1+2+3" -> La fonction retourne 6
$chaine="1+2*3" -> La fonction retourne 7
... etc ...

Cause : je construis une calculette qui, jusqu'ici m'affiche une suite de caractères en fonction des touches (1-9, 0, +, -, *, /, =), et qui construit la chaîne au kilomètre. Il faut maintenant qu'à l'appui sur "=", ma calculette me retourne le résultat.

Donc s'il existait en PHP la fonction calculer_la_chaine($chaine), ça serait bien :)

Quelqu'un connaît-il une telle fonction ?

Merci.

David.
-- Ecumastor

Avatar du membre
Mammouth du PHP | 1609 Messages

28 juil. 2020, 16:38

Salut, je suis tombé sur ça avec une petite recherche google : https://github.com/chriskonnertz/string-calc
Développeur web depuis + de 20 ans

Eléphanteau du PHP | 37 Messages

28 juil. 2020, 17:08

Merci Saian.

Le lien que tu m'as donné semble fort sympathique, mais je ne sais pas du tout comment utiliser tout ça. Cela dit, en lisant, j'ai vu une fonction php, bien dangereuse, nommée "eval".
Donc, comme je travaille sur un projet de gestion de stock, et comme les accès sont protégés, je me suis penché sur cette fonction, d'où finalement une fonction tout simple qui résoud mon problème :
<?php
function calculer($chaine){
	//echo"VERIF chaine : $chaine<br>";
	$calcul = eval('return '.$chaine.';');
	return $calcul;
}
?>

Et ca fonctionne.

Merci donc d'avoir pris le temps de me répondre.

David.
-- Ecumastor

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

30 juil. 2020, 13:45

Effectivement eval() ne doit quasiment jamais être utilisé.
Du coup je préconise cette librairie qui fait ce qu'il te faut (et même si tu as déjà fait ton choix, je mets le lien si un futur internaute cherche une solution) :
https://github.com/madorin/matex
Quand tout le reste a échoué, lisez le mode d'emploi...