問題:
を理解しようとしています文字列として渡された数学演算を実行する適切かつ安全な方法。私のシナリオでは、これは画像 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 サイトの他の関連記事を参照してください。