Aller au contenu

Interpretation mathematique d'une chaine


astrofiles

Sujets conseillés

Bonjour,

Peut être suis je sur un faux problème mais comment est il possible en php de calculer une expression contenue dans une chaine .

Exemple : $str= "2000 * 10";

Je voudrai qu'à l'affichage il m'affiche 20 000 et pas "2000 * 10" .

L'expression à calculer est forcément en String au départ pour mon besoin perso.

C'est tout bête mais je ne vois pas comment faire :blink:

Merci d'avance

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Pourquoi mettre des guillemets ?

Si tu les enlèves, c'est reglé non ?

<edit>Je viens de m'apercevoir que j'ai peut-être lu la question d'astrofiles un peu vite...</edit>

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

eval devrait faire l'affaire ;)

$str= "2000 * 10";
eval("\$str=".$str.";");
echo $str;

Mais attention, si la chaîne provient d'un utilisateur cela représente de très gros risque...car l'utilisateur pourrait exécuter n'importe quel code PHP !

Lien vers le commentaire
Partager sur d’autres sites

Les guillements sont là car il sagit d'une equation mathematique mémorisée en base de donnée dans un varchar.

Merci pour vos réponses j 'ai trouvé exactement ce que je cherchais, je le met ici ça peut servir..... ;)

function matheval($equation){
      $equation = preg_replace("/[^0-9+\-.*\/()%]/","",$equation);
      $equation = preg_replace("/([+-])([0-9]+)(%)/","*(1\$1.\$2)",$equation);
      // you could use str_replace on this next line
      // if you really, really want to fine-tune this equation
      $equation = preg_replace("/([0-9]+)(%)/",".\$1",$equation);
      if ( $equation == "" ) {
              $return = 0;
      } else {
              eval("\$return=" . $equation . ";");
      }
      return $return;
}

Source : http://fr.php.net/eval

Lien vers le commentaire
Partager sur d’autres sites

Merci pour vos réponses j 'ai trouvé exactement ce que je cherchais, je le met ici ça peut servir..... ;)

<{POST_SNAPBACK}>

Est-ce que cela règle aussi le problème de sécurité ?

xpatval

Lien vers le commentaire
Partager sur d’autres sites

Dans cette fonction, le code n'est passé dans eval qu'après avoir été nettoyé avec les différents preg_replace ... (tout ce qui n'est pas un chiffre, un opérateur, etc. est supprimé) ... alors à part ceci rien ne sera evalué.

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...