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 ?

Comment puis-je évaluer en toute sécurité les formules mathématiques transmises sous forme de chaînes en PHP ?

DDD
Libérer: 2024-12-08 16:36:11
original
537 Les gens l'ont consulté

How Can I Safely Evaluate Mathematical Formulas Passed as Strings in PHP?

Comment évaluer une formule passée sous forme de chaîne 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;
}
Copier après la connexion
function calculator2($str){
    $fn = create_function("", "return ({$str});" );
    return $fn();
};
Copier après la connexion

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);
}
Copier après la connexion

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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal