eval函数如何在PHP中工作?

时间:2009-11-20 01:29:27

标签: php eval

我试图弄清楚eval()函数如何以一种简单的方式工作。我尝试了以下代码,但它不起作用,而是显示一个解析错误。

<?php
    $str = "exit()";
    eval($str);
?> 

我的代码出了什么问题?

5 个答案:

答案 0 :(得分:4)

我需要一个分号

<?php
    $str = "exit();";
    eval($str);
?>

来自PHP文档:

  

请记住,必须传递的字符串   是有效的PHP代码,包括东西   比如使用a来终止语句   分号,所以解析器不会死   eval()之后的行

答案 1 :(得分:2)

只是一个提示 - eval'代码是动态评估的,可以逃避垃圾收集器。

答案 2 :(得分:2)

错误是:“Parse error: syntax error, unexpected $end in Command line code(1)”?如果是这样,那是因为你没有在exit()的末尾添加分号。

所以试试:

<?php
    $str = "exit();";
    eval($str);
?>

希望这有帮助。

答案 3 :(得分:1)

最后需要一个分号:

并且eval的问题在于它从IL语言调用解析器,因此,评估的代码将是VSL(非常慢的语言),因此,如果您的网站不会同时遭到许多用户的攻击,那么没问题,但是如果你投射的东西很大,那么我建议你不要使用eval,只是在非常必要的情况下。

希望它有所帮助。

答案 4 :(得分:0)

$str = "exit();";可能有用。 除非真的有必要,否则不应使用eval()。

此外,尝试使用exit()以外的函数,或将字符串作为参数传递给exit函数。否则,您将看不到它的输出。