>백엔드 개발 >PHP 튜토리얼 >PHP에서 문자열로 전달된 수학 공식을 어떻게 안전하게 평가할 수 있습니까?

PHP에서 문자열로 전달된 수학 공식을 어떻게 안전하게 평가할 수 있습니까?

DDD
DDD원래의
2024-12-08 16:36:11493검색

How Can I Safely Evaluate Mathematical Formulas Passed as Strings in PHP?

PHP에서 문자열로 전달된 수식을 어떻게 평가하나요?

문제:

이를 알아내려고 노력 중입니다. 문자열로 전달된 수학 연산을 실행하는 적절하고 안전한 방법입니다. 제 시나리오에서는 이미지 EXIF ​​데이터에서 가져온 값입니다.

약간의 조사 끝에 두 가지 방법을 찾았습니다.

function calculator1($str){
    eval("$str = $str;");
    return $str;
}
function calculator2($str){
    $fn = create_function("", "return ({$str});" );
    return $fn();
};

두 예 모두 악성 코드를 방지하려면 문자열 정리가 필요합니다. 실행. 다른 방법이나 더 짧은 방법이 있습니까?

답변:

function calculator3($str){
    $m = new EvalMath;
    return $m->evaluate($str);
}

이 방법은 수학 표현식을 안전하게 평가하기 위해 특별히 설계된 EvalMath 클래스를 사용합니다. 신뢰할 수 없는 출처에서. 강력한 오류 검사 기능을 제공하며 제한된 기능 세트만 평가합니다.

사용 방법의 예는 다음과 같습니다.

$str = '2+2';
$result = calculator3($str);
echo $result; // Output: 4

위 내용은 PHP에서 문자열로 전달된 수학 공식을 어떻게 안전하게 평가할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.