2010-11-18 34 views
2

是否可以計算字符串中的數學函數f(x)?事情是這樣的:PHP:計算字符串中的數學函數f(x)

$function = '2x+3'; 
$x = 4; 
math_function($function, $x); //Shoud produce 11 

我找不到在PHP.net或與谷歌這樣的任務的庫,但我不認爲我想要這第一個?

回答

3

我的標準回答這個問題時,它作物起來:

不要使用eval(尤其是如果配方中含有用戶輸入)或通過編寫自己的公式解析器推倒重來。

查看PHPClasses上的evalMath類。它應該在安全的沙箱中完成你想要的任何事情。

+0

+1 ...建立一個數學公式分析器是一個很大的學術問題(因爲有許多定義好的邊界情況會產生一個非平凡的解決方案)。但就實際問題而言,這是不值得的努力,因爲有工具爲它構建... – ircmaxell 2010-11-18 16:08:46

+0

哇,這很快!非常感謝你。我甚至不知道eval()的存在!我會看看它。 – Woutb21 2010-11-18 16:12:39

+0

我很困惑:你說「不要使用eval」,然後建議使用完全相同的類。 (仍然完全有效的答案,解決ops問題,所以+1,即使evalMath代碼讓我想嘔吐)) – edorian 2010-11-18 16:16:38