IT/php

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

조원태 2017. 1. 18. 00:10
반응형

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


설명 ¶


mixed eval ( string $code )


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


Caution


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



인수 ¶

code

유효한 PHP 코드를 평가할 수 있습니다.


PHP 태그를 열고 닫을 때 코드를 감싸서는 안됩니다 (예 : 'echo'). "; ' '대신 <? php echo "안녕하세요!"; ?> '. 적절한 PHP 태그를 사용하여 PHP 모드를 종료하고 다시 시작할 수 있습니다. 'echo "PHP 모드에서!"; ?> HTML 모드에서! <? php echo "PHP 모드로 돌아 가기!";


그 외에도 전달 된 코드는 유효한 PHP 여야합니다. 여기에는 모든 문장을 세미콜론을 사용하여 적절하게 종료해야합니다. 'echo "안녕하세요!"'예를 들어 구문 분석 오류가 발생하는 반면 'echo "안녕하세요!";' 작동합니다.


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


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


반환값 ¶


eval ()은 평가 된 코드에서 return이 호출되지 않으면 NULL을 반환하며,이 경우 return에 전달 된 값이 반환됩니다. PHP 7에서 평가 된 코드에 구문 분석 오류가 있으면 eval ()은 ParseError 예외를 throw합니다. PHP 7 이전에는이 ​​경우 eval ()이 FALSE를 반환했으며 다음 코드의 실행이 정상적으로 계속되었습니다. set_error_handler ()를 사용하여 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.

반응형