PHP : Calcul opération contenue dans variable
jemsss
Messages postés
198
Statut
Membre
-
ben85350 Messages postés 622 Statut Membre -
ben85350 Messages postés 622 Statut Membre -
Bonjour,
Je ne trouve pas comment calculer un opération enregistrée dans une variable en PHP.
Exemple :
Le texte contenue dans $operation est "1+2*3"
" echo $operation " me donne " 1+2*3 " or je voudrais qu'il affiche le résultat de l'opération : "7"
Savez-vous comment faire?
Merci d'avance
Je ne trouve pas comment calculer un opération enregistrée dans une variable en PHP.
Exemple :
Le texte contenue dans $operation est "1+2*3"
" echo $operation " me donne " 1+2*3 " or je voudrais qu'il affiche le résultat de l'opération : "7"
Savez-vous comment faire?
Merci d'avance
Configuration: Windows XP Firefox 3.0.10
8 réponses
-
Il ne faut pas mettre de guillemets.
$_POST['operation'] = '10+50*12'; if( preg_match('#^\d+[*/+-]{1}\d+([*/+-]{1}\d+)*$#', $_POST['operation']) ) { eval("\$resultat = {$_POST['operation']};"); echo "résulat de l'opération {$_POST['operation']} : $resultat"; } else { // format incorrect echo 'format non autorisé !'; }
Attention aussi à la division par 0. -
salut !
$operation = 1+2*3
et non pas$operation = "1+2*3"
-
Merci pour ta réponse,
Le problème c'est que l'opération est entrée par les interautes dans un formulaire. Donc je récupère les données et je les enregistre dans $operation.
Il doit bien y avoir une fonction ou une combine qui permet de transformer le texte d'une variable en opération. Mais je ne trouve pas. -
Un eval() mais c'est vivement déconseillé pour des données saisies par un utilisateur.
Si tu t'en sers, il faut controler de manière stricte avec une expression régulière le format de la valeur reçue. -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Merci. Ok je vais essayer.
Les données ne sont pas directement saisie par l'utilisateur. Il n'y a pas des zone de texte mais des bouton pour tapé l'opération. -
J'ai essayé mais ça ne marche pas
Voici le code employéeval( "\$resultat = \"$operation\";" ); echo $resultat;
ou$resultat = $operation; eval( "\$resultat = \"$resultat\";" ); echo $resultat;
Est-ce normal que ça ne marche pas ?
Ou y-a-t-il une autre solution ? -
Bonjour tout le monde,
J'ai un petit soucis, j'ai une variable $an qui vaut "2009/2010" (équivalent à une année scolaire) :
$an = "2009/2010";
Le problème c'est que quand je veux enregistrer $an dans une base de donnée, elle prend la valeur de l'opération 2009 divisé par 2010 (0,99...), or je ne veut pas que ça soit interpreté comme une opération mais simplement comme une chaine.
Savez-vous commen faire cela?
Merci par avance. -
Salut !
Quel est le type de ta variable dans ta base de données ? varchar ? int ? char ?