Maison >développement back-end >tutoriel php >Comment puis-je évaluer en toute sécurité les formules mathématiques transmises sous forme de chaînes en PHP ?
Problème :
J'essaie de comprendre le moyen approprié et plus sûr d’exécuter une opération mathématique transmise sous forme de chaîne. Dans mon scénario, il s'agit de valeurs extraites des données EXIF de l'image.
Après quelques recherches, j'ai trouvé deux façons de le faire.
function calculator1($str){ eval("$str = $str;"); return $str; }
function calculator2($str){ $fn = create_function("", "return ({$str});" ); return $fn(); };
Les deux exemples nécessitent un nettoyage de chaîne pour éviter le code malveillant. exécution. Existe-t-il un autre moyen, ou plus court, de le faire ?
Réponse :
function calculator3($str){ $m = new EvalMath; return $m->evaluate($str); }
Cette méthode utilise la classe EvalMath, spécialement conçue pour évaluer en toute sécurité des expressions mathématiques. provenant de sources non fiables. Il fournit une vérification robuste des erreurs et n'évalue qu'un ensemble limité de fonctions.
Voici un exemple de la façon de l'utiliser :
$str = '2+2'; $result = calculator3($str); echo $result; // Output: 4
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!