首頁 >後端開發 >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 資料中獲取的值。

經過一番研究,我發現了兩種方法。

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn