如果我错了,请纠正我,但是从你上面的代码中,当你评估你的 $condition 字符串时,你又把它放回 $condition。除非您的评估代码中包含“返回”,否则它将返回 null ( reff : http://php.net/manual/en/function.eval.php )。
但是您的问题实际上是在 $condition 上误用了 "。当您使用 " 在 php 上包装字符串时,它将将该字符串上的每个变量更改为该代码上方为该变量定义的值。
所以,不是让你的代码由 php 评估,你实际上是在向 eval() 发送错误的代码。
您当前的 $condition 代码是:
if(HD<>'99' && HD<>'XX' && HD<>'XM' && HD<> 'XD' && HD<> 'XY' && HD<> 'XE') { echo 'YES'; } else { echo 'NO'; }
你想要达到的是:
if($status<>"99" && $status<>"XX" && $status<>"XM" && $status<> "XD" && $status<> "XY" && $status<> "XE") { echo "YES"; } else { echo "NO"; }
请将 " 更改为 ' ,因为 ' 中的字符串将保持原样(如果您想将 ' 放入其中,请使用反斜杠 (\) 对其进行转义)并看看会发生什么。
我的工作:
$status = "HD";
$vari = "XX";
$condition = 'if($status<>"99" && $status<>"XX" && $status<>"XM" && $status<> "XD" && $status<> "XY" && $status<> "XE") { echo "YES"; } else { echo "NO"; }';
eval($condition );
echo $condition;
echo "<hr>";
$resp = str_replace('status','vari',$condition);
eval($resp);