2016-11-14 1 views
0

내가 얻고 난이 문자열을 평가하고 나에게 평가의 오류 사용을주고 그뿐만 PHP 7에서 평가 사용하려고 지금평가는 PHP에 낙담 7

$a = '1*2*(2+3)'; 
echo eval($a) // Output should be 10 

문자열 적 예에서 식() 낙심하고 있으므로이 문자열을 어떻게 평가할 수 있습니까?

답변

0

manual는 말합니다. 그것은 임의의 PHP 코드 실행을 허용하기 때문에

주의

평가 후면() 언어 구조는 매우 위험하다. 따라서 그 사용은 권장되지 않습니다. 이 구조를 사용하는 것 외에 다른 옵션이 없다는 것을 신중하게 확인한 경우 사용자가 제공 한 데이터 을 사전에 적절히 검증하지 않은 채로 전달하지 않도록 특히주의하십시오.

지금까지 대안이 당신이 스레드에 주어진이 솔루션을 시도 할 수 있습니다에 관한 한 : calculate math expression from a string using eval

5

PHP never raises any such error : 당신은 제 3자가 설치를 방해했다고 의심한다, 아마도 "어떤 종류의 설치 보안 "초점을 맞춘 확장 기능으로 PHP의 동작을 변경합니다.

이러한 모든 확장은 PHP 프로젝트에서 허용하지 않으며 끔찍합니다.

매뉴얼에 eval에 관한 내용이 있더라도 파일을 포함하고 코드를 평가하는 사이에는 no technical difference이 있습니다.

현실 세계의 유일한 차이점은 eval 된 코드에는 사용자 입력이 포함될 수 있다는 것입니다. 사용자 입력의 삭제 및 필터링은 eval을 사용하지 않는 PHP 응용 프로그램에서 문제가됩니다.

참고 : 당신은 당신이 평가 된 코드에서 return를 사용하지 않는 한 당신은 eval()echo을 사용할 수 없습니다 평가 된 표현

0

에서 수익을 누락되었습니다.

eval() 수익률이 return 않는 NULL이 평가 된 코드에서 호출됩니다 : http://php.net/manual/en/function.eval.php

그래서 당신은 할 수 있습니다 :

$a = 'echo 1*2*(2+3);'; 
eval($a); 

또는

$a = 'return 1*2*(2+3);'; 
echo eval($a);