問題:
我正在嘗試找出執行作為字串傳遞的數學運算的正確且更安全的方法。在我的場景中,它是從圖像 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中文網其他相關文章!