Rechercher : dans
Par :

PHP : Calcul opération contenue dans variable

Dernière réponse le 29 avr 2009 à 18:58:43 jemsss, le 28 avr 2009 à 22:39:20 
 Signaler ce message aux modérateurs

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

Configuration: Windows XP
Firefox 3.0.10

Meilleures réponses pour « PHP : Calcul opération contenue dans variable » dans :
PHP - Les opérateurs Voir Qu'est-ce qu'un opérateur? Les opérateurs sont des symboles qui permettent de manipuler des variables, c'est-à-dire effectuer des opérations, les évaluer, ... On distingue plusieurs types d'opérateurs : les opérateurs de calcul les opérateurs...
[PHP] Lister le contenu d'un répertoire VoirGrâce à PHP, il est possible d'afficher le contenu d'un répertoire et de ses sous-répertoires. Voici ci-dessous une fonction permettant de parcourir récursivement les répertoires et sous-répertoires et d'en afficher les fichiers : function...
[PHP] Notice: Undefined index: VoirSi vous utilisez les tableaux $_POST ou $_GET pour récupérer les variables de vos formulaires ou autres, il se peut que vous tombiez sur cette erreur: Notice: Undefined index 'champs du tableau' in 'chemin du fichier php en cours d'execution' on line...
PHP - Nettoyer une chaîne de caractères VoirVoici une fonction en PHP qui peut être assez pratique, surtout quand on fait de l'URL Rewriting. Cette fonction permet de transformer les caractères de n'importe quelle chaîne de caractères en chaîne non accentuée, en enlevant les caractères...
PHP - Les variables VoirConcept de variable avec PHP Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. Les variables en langage PHP peuvent être de trois...
PHP - Structures conditionnelles VoirQu'est-ce qu'une structure conditionnelle? On appelle structure conditionnelle les instructions qui permettent de tester si une condition est vraie ou non, c'est-à-dire si la valeur de son expression vaut 0 ou 1 (le PHP associe le mot clé true à 1...
PHP - Les variables d'environnement VoirNotion de variable d'environnement Les variables d'environnement sont, comme leur nom l'indique, des données stockées dans des variables permettant au programme d'avoir des informations sur son environnement. L'environnement, dans le cas du script...

1

ben85350, le 28 avr 2009 à 22:51:09
  • +1

Salut !

$operation = 1+2*3
et non pas
$operation = "1+2*3"

Répondre à ben85350

2

jemsss, le 28 avr 2009 à 22:59:29

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.

Répondre à jemsss

3

P@t@ch0n, le 28 avr 2009 à 23:07:15

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.

Répondre à P@t@ch0n

4

jemsss, le 28 avr 2009 à 23:37:05

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.

Répondre à jemsss

5

jemsss, le 29 avr 2009 à 17:15:21

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 ?

Répondre à jemsss

6

 P@t@ch0n, le 29 avr 2009 à 18:58:43

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.

Répondre à P@t@ch0n
Collection CommentÇaMarche.net