기타 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.
메모
참고: 이것은 함수가 아니라 언어 구조이기 때문에 변수 함수나 명명된 인수를 사용하여 호출할 수 없습니다.
팁 결과를 브라우저에 직접 출력하는 모든 것과 마찬가지로 출력 제어 함수를 사용하여 이 함수의 출력을 캡처하고 문자열로 저장할 수 있습니다(예:).
메모: 평가된 코드에 치명적인 오류가 발생하면 전체 스크립트가 종료됩니다.
기타
- call_user_func() - 첫 번째 매개변수에 의해 제공된 콜백 호출