astrofiles Posté 17 Mai 2006 Partager Posté 17 Mai 2006 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 Merci d'avance Lien vers le commentaire Partager sur d’autres sites More sharing options...
NorSeb Posté 17 Mai 2006 Partager Posté 17 Mai 2006 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 More sharing options...
TheRec Posté 17 Mai 2006 Partager Posté 17 Mai 2006 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 More sharing options...
astrofiles Posté 17 Mai 2006 Auteur Partager Posté 17 Mai 2006 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 More sharing options...
xpatval Posté 17 Mai 2006 Partager Posté 17 Mai 2006 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 More sharing options...
TheRec Posté 17 Mai 2006 Partager Posté 17 Mai 2006 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 More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant