eval函数的坑

  开发工作中遇到这样一种情形,需要执行用户输入的php代码串,于是决定使用eval函数。coding大概示例如下:

function getStr($str) {
	return strlen($str)>3 ? substr($str, 0, -3) : $str;
}

$php = 'getStr("wujuntian");';
$s = eval($php);
echo $s;

结果打印出来的结果一直是空的,使用var_dump()打印出来是NULL,原来eval()函数负责执行的代码字符串中如果没有使用"return"返回值的话,是返回NULL的。

  纠结了许久,原来需要在php代码串中使用变量去接收执行结果,正确coding如下:

function getStr($str) {
	return strlen($str)>3 ? substr($str, 0, -3) : $str;
}

$php = '$s=getStr("wujuntian");';
eval($php);
echo $s;

这样打印出来终于如愿以偿了!

  为避免将来再踩此坑,谨此记之。

 

原文地址:https://www.cnblogs.com/wujuntian/p/6629026.html