美文网首页PHP
[PHP] php中的eval函数

[PHP] php中的eval函数

作者: 何幻 | 来源:发表于2016-03-02 19:53 被阅读144次

    <u></u>eval函数会把字符串按照php代码来执行。

    如果字符串是合法的php脚本,
    eval会返回字符串中return的值,
    如果字符串中没有return,则返回null

    如果字符串中的php脚本语法错误,
    则会产生Parse error错误,
    <u></u>eval会返回false

    通过eval与错误抑制符@联合使用,可以判断给定php脚本是否具有语法错误。

    注意:
    <u></u>php_check_syntax也是用来判断语法错误的,只不过被废弃了。

    function checkSyntax($fileRelativePath){        
        $fileContent=file_get_contents($fileRelativePath);
        
        $isSyntaxOk=@eval(sprintf(
            "return true;?>%s<?php",
            $fileContent
        ));
        
        return $isSyntaxOk;
    }
    

    注意:
    (1)return true;是为了让eval在脚本语法合法的情况下返回true
    (2)?><?php是为了保证$fileContent中开头和结尾的html不被解析为php。但是,这种用法在php5.3.26中不能解析,必须把<?php?>去掉才可以。
    (3)@eval会求值参数字符串,并抑制错误信息。
    (4)虽然eval执行的字符串首先return true;了,但是其中的function还是会被加载到全局空间中的。而且,eval无法定位到语法出错的位置,所以,后来改用了register_shutdown_function

    相关文章

      网友评论

        本文标题:[PHP] php中的eval函数

        本文链接:https://www.haomeiwen.com/subject/lppnkttx.html