实现一个php函数,该函数接受一个纯php代码组成的字符串,输出字符串中去掉注释后的内容[color=#FF0000]

解决方案 »

  1.   

    <?php
    /**
     * 去除PHP代码注释
     * @param $code String 传入需要处理的php代码
     * @param $type int 传入需要去除的注释类型 0:全部去除(默认),1:仅去除行注释(//),2:仅去除行注释(#),3:仅去除段注释(/* *\/)
     * @return:返回去除注释后的代码
     */
    function Remove_Notes($code, $type = 0){
    //逻辑处理
    switch($type){
    //全部去除
    case 0:
    //$code = preg_replace("/(\/\*.*\*\/\n)|(#.*?\n)|(\/\/.*?\n)/s", '',str_replace(array("\r\n", "\r"), "\n", $code));
    $code = preg_replace("/((\/\*.*\*\/)|(#.*?)|(\/\/.*?))\n/s", '',str_replace(array("\r\n", "\r"), "\n", $code));
    break;
    //仅去除行注释(//)
    case 1:
    $code = preg_replace("@\s*//.*$@m","",$code);
    break;
    //仅去除行注释(#)
    case 2:
    $code = preg_replace("@\s*#.*$@m","",$code);
    break;
    //仅去除段注释(/* */)
    case 3:
    $code = preg_replace("/(\/\*.*\*\/\n)/s","",str_replace(array("\r\n", "\r"), "\n", $code));
    break;
    //异常
    default:
    $code = "逻辑不正确";
    break;
    }
    //返回处理后的代码
    return $code;
    }//示例代码
    $test_code = "<?php
    //我是行注释(//)
    #我是行注释(#)
    /*
    我是段注释(/* *\/)
    */
    echo '以上为测试注释';
    ";//进行测试
    highlight_string(Remove_Notes($test_code,0));