ホームページ >バックエンド開発 >PHPチュートリアル >PHP で文字列として渡された数式を安全に評価するにはどうすればよいですか?

PHP で文字列として渡された数式を安全に評価するにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-08 16:36:11489ブラウズ

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

PHP で文字列として渡された数式を評価するにはどうすればよいですか?

問題:

を理解しようとしています文字列として渡された数学演算を実行する適切かつ安全な方法。私のシナリオでは、これは画像 EXIF データから取得された値です。

少し調べた結果、2 つの方法が見つかりました。

function calculator1($str){
    eval("$str = $str;");
    return $str;
}
function calculator2($str){
    $fn = create_function("", "return ({$str});" );
    return $fn();
};

どちらの例でも、悪意のあるコードを避けるために文字列のクリーンアップが必要です。実行。他に、またはより短い方法はありますか?

回答:

function calculator3($str){
    $m = new EvalMath;
    return $m->evaluate($str);
}

このメソッドは、数式を安全に評価するために特別に設計された EvalMath クラスを使用します。信頼できない情報源からのもの。これは堅牢なエラー チェックを提供し、限られた関数セットのみを評価します。

使用方法の例は次のとおりです:

$str = '2+2';
$result = calculator3($str);
echo $result; // Output: 4

以上がPHP で文字列として渡された数式を安全に評価するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。