기타 eval

(PHP 4, PHP 5, PHP 7, PHP 8)

eval — 문자열을 PHP 코드로 평가


설명

eval(string $code): mixed

주어진 code를 PHP로 평가합니다.

주의 eval() 언어 구조는 임의의 PHP 코드를 실행할 수 있기 때문에 매우 위험합니다. 따라서 사용을 권장하지 않습니다. 이 구성을 사용하는 것 외에 다른 옵션이 없음을 주의 깊게 확인한 경우 사전에 적절하게 유효성을 검사하지 않고 사용자가 제공한 데이터를 전달하지 않도록 특히 주의하십시오.


매개변수

code
평가할 유효한 PHP 코드입니다.

코드는 PHP tags를 열고 닫을 때 래핑되어서는 안 됩니다. 즉, '<?php echo "Hi!"; ?>' 대신 'echo "Hi!";'를 전달해야 합니다. 적절한 PHP 태그를 사용하더라도 PHP 모드를 종료하고 다시 입력할 수 있습니다. 예를 들어 'echo "In PHP mode!"; ?>In HTML mode!<?php echo "Back in PHP mode!";'.

그 외에 전달된 코드는 유효한 PHP여야 합니다. 여기에는 모든 명령문이 세미콜론을 사용하여 적절하게 종료되어야 한다는 것이 포함됩니다. 예를 들어 'echo "Hi!"'는 구문 분석 오류를 일으키는 반면 'echo "Hi!";' 작동합니다.

return 문은 코드 평가를 즉시 종료합니다.

코드는 eval()을 호출하는 코드 범위에서 실행됩니다. 따라서 eval() 호출에서 정의되거나 변경된 모든 변수는 종료 후에도 계속 표시됩니다.


반환 값

평가된 코드에서 return이 호출되지 않는 한 eval()null을 반환합니다. 이 경우 return에 전달된 값이 반환됩니다. PHP 7부터 평가된 코드에 구문 분석 오류가 있으면 eval()에서 ParseError 예외가 발생합니다. PHP 7 이전에는 이 경우 eval()false를 반환하고 다음 코드의 실행이 정상적으로 계속되었습니다. set_error_handler()를 사용하여 eval()에서 구문 분석 오류를 잡을 수 없습니다.


Examples

예제 #1 eval() 예제 - 간단한 텍스트 병합

                  
<?php
$string = 'cup';
$name = 'coffee';
$str = 'This is a $string with my $name in it.';
echo $str. "\n";
eval("\$str = \"$str\";");
echo $str. "\n";
?>
                  
                

위의 예는 다음을 출력합니다.

This is a $string with my $name in it.
This is a cup with my coffee in it.
                

메모

참고: 이것은 함수가 아니라 언어 구조이기 때문에 변수 함수명명된 인수를 사용하여 호출할 수 없습니다.

결과를 브라우저에 직접 출력하는 모든 것과 마찬가지로 출력 제어 함수를 사용하여 이 함수의 출력을 캡처하고 문자열로 저장할 수 있습니다(예:).

메모: 평가된 코드에 치명적인 오류가 발생하면 전체 스크립트가 종료됩니다.


기타