php formula interpreter
v2.0.0
用於解析和運行公式的獨立 PHP 函式庫
composer require mormat/php-formula-interpreter
首先,建立MormatFormulaInterpreterCompiler
的實例
$ compiler = new Mormat FormulaInterpreter Compiler ();
然後使用compile()
方法來解析你想要解釋的公式。它將傳回MormatFormulaInterpreterExecutable
的實例:
$ executable = $ compiler -> compile ( ' 2 + 2 ' );
最後從可執行檔運行公式:
$ result = $ executable -> run ();
// $result equals 4
// variables can be used
price + 2
// parenthesis can be used
(1 + 2) * 3
// default functions are available
sqrt(4)
// complex formulas can be used
(((100 * 0.43075) * 1.1 * 1.5) / (1-0.425)) * 1.105
// string are supported
lowercase('FOO')
// arrays are supported
count([2, 3, 4])
// custom functions can be registered
your_function_here(2)
// use the in operator to check if an item is in array
1 in [1, 2, 3] // returns true
// use the in operator to check if a substring is in a string
'Wars' in 'Star Wars'
數值可以是整數或浮點數
2 // integer
2.30 // float
使用簡單引號來分隔字串
'foobar'
使用逗號分隔項目並使用方括號將項目包裝起來
[1, 2, 3]
函數、字串和操作可以用作數組的一項
[cos(0), 'foobar', 2 + 2]
可以使用以下運算子:
操作員 | 用法 | 描述 |
---|---|---|
+ | a+b | a 和 b 之和。 |
- | a-b | a 和 b 的差異。 |
* | 一 * 乙 | a 和 b 的乘積。 |
/ | 甲/乙 | a 和 b 的商。 |
in | 乙中的一個 | 如果 a 是數組,則檢查 b 是否為 a 的項目。如果a是字串,則檢查b是否是a的子字串 |
首先評估運算子*
、 ,然後評估運算子
+
和-
您也可以使用這樣的括號來強製表達式的優先權
2 * (3 + 2)
您可以根據需要使用任多個括號。
2 * (2 * (3 + 2 * (3 + 2)) + 2)
變數只是公式中的一個單詞,如下所示:
price * rate / 100
在 PHP 中執行公式之前,請確保將所有必需的變數注入數組中
$ variables = array (
' price ' => 40.2 ,
' rate ' => 12.8
);
$ executable -> run ( $ variables );
姓名 | 允許的類型 | 描述 |
---|---|---|
圓周率 | 取得 pi 的值 | |
因斯 | numeric | 餘弦 |
罪 | numeric | 正弦 |
開方 | numeric | 平方根 |
戰俘 | numeric , numeric | 指數表達式 |
模數 | numeric , numeric | 第一個值除以第二個值的餘數 |
小寫 | string | 轉換為小寫字串 |
大寫 | string | 轉換為大寫字串 |
大寫 | string | 將字串的第一個字元設為大寫 |
數數 | string|array | 如果 value 是數組,則計算數組中的項目數。如果value是字串,則統計字串中的字元數 |
使用MormatFormulaInterpreterCompiler
類別中的registerCustomFunction()
方法。
自訂函數必須實作MormatFormulaInterpreterFunctionsFunctionInterface
。此介麵包含以下方法:
某些用戶可能想要執行簡單的計算並能夠盡可能地更改它。在使用函式庫之前,您可以使用eval
函數。但這種方法有兩個主要缺點:
安全。 eval 函數正在評估 php 腳本。 Php 是一種非常強大的語言,對於使用者來說可能太強大了,尤其是當使用者想要注入惡意程式碼時。
複雜。對於不懂程式語言的人來說,PHP 也很複雜。最好解釋一下類似 Excel 的公式。