expression.php
2.0.0
信頼されていないソースから数学的またはブール式式を評価する場合は、式クラスを使用します。オブジェクトに保存されている独自の変数と関数を定義できます。
*
/
-
+
%
、 ^
、および**
&&
、 ||
、 そして!
>
<
==
!=
<=
>=
===
および!==
pi
およびe
定数=~
>>
<<
composer require jcubic/expression
<?
require_once ( __DIR__ . " /vendor/autoload.php " );
use jcubic Expression ;
$ e = new Expression ();
// basic evaluation:
$ result = $ e -> evaluate ( ' 2+2 ' );
// supports: order of operation; parentheses; negation; built-in functions
$ result = $ e -> evaluate ( ' -8(5/2)^2*(1-sqrt(4))-8 ' );
// support of booleans
$ result = $ e -> evaluate ( ' 10 < 20 || 20 > 30 && 10 == 10 ' );
// support for strings and match (regexes can be like in php or like in javascript)
$ result = $ e -> evaluate ( ' "Foo,Bar" =~ /^([fo]+),(bar)$/i ' );
// previous call will create $0 for whole match match and $1,$2 for groups
$ result = $ e -> evaluate ( ' $2 ' );
// create your own variables
$ e -> evaluate ( ' a = e^(ln(pi)) ' );
// or functions
$ e -> evaluate ( ' f(x,y) = x^2 + y^2 - 2x*y + 1 ' );
// and then use them
$ result = $ e -> evaluate ( ' 3*f(42,a) ' );
// create external functions
$ e -> functions [ ' foo ' ] = function () {
return " foo " ;
};
// and use them
$ result = $ e -> evaluate ( ' foo() ' );
$e->evalute($expr)
式を評価し、結果を返します。エラーが発生した場合、警告を印刷してfalseを返します。 $ exprが関数の割り当てである場合、成功してtrueを返します。
$e->e($expr)
$ e-> evaluate()の同義語。
$e->vars()
すべてのユーザー定義の変数と値の連想配列を返します。
$e->funcs()
すべてのユーザー定義関数の配列を返します。
$e->suppress_errors
式を評価するときに警告をオフにするようにtrueに設定する
$e->last_error
最後の評価が失敗した場合、エラーを説明する文字列が含まれています。 (Suppress_Errorsがオンになっている場合に便利です)。
$e->functions
外部から定義された関数を含むアソシエーションアレイ。
$e->variables
ユーザーと外部で定義された変数を含むAssocアレイ。
このプロジェクトはフォークとして始まりました。元のコードはMiles Kaufmannによって作成され、phpclasses.orgで公開されました。元のコードに多くの機能とバグ修正を追加しましたが、新しい機能を追加してバグを修正するためにコードを変更するのが非常に難しいと判断しました。そこで、PEGパーサージェネレーターを使用して、すべてをゼロから書き換えることにしました。
元のコードは、PackagistおよびLegacy Branchで見つけることができるソースコードのバージョン1.0として引き続き利用できます。
Copyright(c)2024 Jakub T. Jankiewicz
MITライセンスの下でリリースされました