faire un calcul contenu dans une string

faire un calcul contenu dans une string - PHP - Programmation

Marsh Posté le 01-05-2006 à 02:52:23    

Hello, j'ai un pti souci :  
 
je récupère une variable $_POST (donc de type string). J'aimerais que si cette variable comporte une fraction, on calcule la fraction.
Par exemple, si $_POST = "4/2", on récupère la valeur 2. Transformer en type "float", ou additionner la variable avec 0, ne permet que de récupérer le premier chiffre de la fraction (ici 4).
 
Je voie pas bien comment faire ça. J'ai l'impression que eval() pourrait, mais il est pas question que j'utilise ça :p
 
Quelqu'un saurait comment exécuter un calcul contenu dans une string ?

Reply

Marsh Posté le 01-05-2006 à 02:52:23   

Reply

Marsh Posté le 01-05-2006 à 03:30:54    

Djebel1 a écrit :

Hello, j'ai un pti souci :  
 
je récupère une variable $_POST (donc de type string). J'aimerais que si cette variable comporte une fraction, on calcule la fraction.
Par exemple, si $_POST = "4/2", on récupère la valeur 2. Transformer en type "float", ou additionner la variable avec 0, ne permet que de récupérer le premier chiffre de la fraction (ici 4).
 
Je voie pas bien comment faire ça. J'ai l'impression que eval() pourrait, mais il est pas question que j'utilise ça :p
 
Quelqu'un saurait comment exécuter un calcul contenu dans une string ?


Eval() :o  
c'est fait pour executer le code contenu dans une string :D

Reply

Marsh Posté le 01-05-2006 à 03:46:13    

ouais mais vlà la faille de sécu sur une variable $_POST :'(
Pas d'autres moyens ? :(

Reply

Marsh Posté le 01-05-2006 à 05:54:04    

http://fr.php.net/eval
il n'y a pas que la doc qui est intéressante sur php.net, mais aussi les commentaires, en partant du bas de la page
j'ai trouvé ce commentaire :  

Citation :


 David Schumann
04-Nov-2003 08:17
To evaluate math expressions (multiply, divide, addition, subtraction, percentages), use the following function, based on Taras Young's 'evalsum' function posted earlier:

Code :
  1. function matheval($equation){
  2.       $equation = preg_replace("/[^0-9+\-.*\/()%]/","",$equation);
  3.       $equation = preg_replace("/([+-])([0-9]+)(%)/","*(1\$1.\$2)",$equation);
  4.       // you could use str_replace on this next line
  5.       // if you really, really want to fine-tune this equation
  6.       $equation = preg_replace("/([0-9]+)(%)/",".\$1",$equation);
  7.       if ( $equation == "" ) {
  8.               $return = 0;
  9.       } else {
  10.               eval("\$return=" . $equation . ";" );
  11.       }
  12.       return $return;
  13. }


You could easily extend this to include exponents, square roots, or really any other mathematical function. I use it in a 'price each' field on a purchase order form. The user can type in '$10.00-25%' and get 7.50 as the result.

Reply

Marsh Posté le 01-05-2006 à 23:48:48    

ha ouais, pourtant je les lis d'hab ^^
merci, c'est pas con comme idée

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed