신뢰할 수없는 소스에서 수학적 또는 부울 표현을 평가하려면 표현 클래스를 사용하십시오. 객체에 저장된 자신의 변수와 함수를 정의 할 수 있습니다.
*
/
-
+
%
, ^
및 **
&&
, ||
, 그리고 !
>
<
==
!=
<=
>=
===
및 !==
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
외부로 정의 된 함수를 포함하는 ASSOC 배열.
$e->variables
사용자 및 외부에서 정의 된 변수가 포함 된 ASSOR 배열.
이 프로젝트는 포크로 시작되었습니다. Original Code는 Miles Kaufmann에 의해 작성되었으며 phpclasses.org에 게시되었습니다. 원래 코드에 많은 기능과 버그 수정을 추가했지만 코드가 새로운 기능을 추가하고 버그를 수정하기 위해 수정하기가 어렵다고 결정했습니다. 그래서 PEG Parser Generator를 사용하여 처음부터 모든 것을 처음부터 다시 작성하기로 결정했습니다.
원래 코드는 여전히 Packagist에서 버전 1.0으로, 레거시 브랜치에서 찾을 수있는 소스 코드로 사용할 수 있습니다.
저작권 (C) 2024 Jakub T. Jankiewicz
MIT 라이센스에 따라 릴리스