PHP의 eval() 함수는 문자열로 된 내용을 실제 PHP 코드로 해석하여 실행하는 함수입니다. 동적으로 코드를 생성하거나 변수를 문자열 안에서 치환해야 할 때 유용하게 사용됩니다.
문법
eval(code)
매개변수
code − 실행하고자 하는 PHP 코드가 담긴 문자열입니다.
반환값
eval() 함수의 반환 동작은 다음과 같습니다.
- 코드 문자열 안에
return문이 없으면 null을 반환합니다. return문이 호출되면 return으로 전달된 값을 그대로 반환합니다.- 코드 문자열에 파싱(parse) 오류가 존재하면 false를 반환합니다.
사용 예제
<?php
$one = "Demo";
$two = "text";
$res = 'This is $one $two!';
echo $res . "<br>";
eval("\$res = \"$res\";");
echo $res;
?>실행 결과
위 예제를 실행하면 다음과 같은 결과가 출력됩니다.
This is $one $two! This is Demo text!
예제 설명
처음 출력된 This is $one $two!는 작은따옴표로 정의된 문자열이므로 변수가 치환되지 않고 그대로 표시됩니다. 이후 eval() 함수가 해당 문자열을 PHP 코드로 실행하면서 큰따옴표 형태로 재평가되어, 두 번째 출력에서는 $one과 $two의 값이 각각 치환된 This is Demo text!가 출력됩니다.
주의사항
eval() 함수는 전달된 문자열을 그대로 실행하기 때문에 매우 강력하지만 위험한 함수이기도 합니다. 사용자 입력값 등 외부 데이터가 eval()에 전달될 경우 코드 삽입(Code Injection) 공격에 노출될 수 있으므로, 반드시 신뢰할 수 있는 데이터에만 사용하고 가능하면 다른 대안을 우선 고려하는 것이 좋습니다.