PHP : Calcul opération contenue dans variable

jemsss Messages postés 188 Date d'inscription   Statut Membre Dernière intervention   -  
ben85350 Messages postés 610 Date d'inscription   Statut Membre Dernière intervention   -
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
A voir également:

8 réponses

P@t@ch0n Messages postés 565 Date d'inscription   Statut Membre Dernière intervention   85
 
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.
4
ben85350 Messages postés 610 Date d'inscription   Statut Membre Dernière intervention   27
 
salut !
$operation = 1+2*3
et non pas
$operation = "1+2*3"
1
jemsss Messages postés 188 Date d'inscription   Statut Membre Dernière intervention   17
 
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.
0
P@t@ch0n Messages postés 565 Date d'inscription   Statut Membre Dernière intervention   85
 
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jemsss Messages postés 188 Date d'inscription   Statut Membre Dernière intervention   17
 
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.
0
jemsss Messages postés 188 Date d'inscription   Statut Membre Dernière intervention   17
 
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 ?
0
yeah
 
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.
0
ben85350 Messages postés 610 Date d'inscription   Statut Membre Dernière intervention   27
 
Salut !
Quel est le type de ta variable dans ta base de données ? varchar ? int ? char ?
0