我正在为 IRC 机器人开发一个数学函数,但是我似乎无法让它适用于数字的幂,即 5**2,目标是尽可能保证它的安全,因为它确实使用了 eval,并且除此之外能够做很多一般的数学运算。现在,这就是我所拥有的。是否有更好/更有效的方法?提前致谢。
case ':$math':
$input = rtrim($this->get_message()); // grabbing the user input
$input = preg_replace('/[0-9+*%.\/-(\*\*)]/', '', $input);
$sum = $this->do_math($input); // store the return of our input passed through the do_math function into $sum
if($sum == "NULL") {
break;
}
else {
$this->send_message("The value is: ".$sum); // echo the value
}
break;
function do_math($input) {
$result=eval("return ($input);"); // using eval to preform math on the specified input
if($result == NULL) {
$this->send_message("Invalid characters were assigned in the math function!");
return "NULL";
break;
}
else {
return $result; // return the sum
}
}