前言

PHP内置php_strip_whitespace方法用于读取php文件并去除代码中的空白和注释,但不支持直接读取内容去除空白和注释,下面方法则可以兼容。

源代码

/** 
 * 去除代码中的空白和注释 
 * @param string $content 代码内容 
 * @return string 
 */
$content = file_get_contents('upload_file.php'); //读取指定文件中的内容
file_put_contents('./处理后的文件.php',strip_whitespace($content));//对指定内容进行处理后保存新文件
function strip_whitespace($content) { 
    $stripStr   = ''; 
    //分析php源码 
    $tokens     = token_get_all($content); 
    $last_space = false; 
    for ($i = 0, $j = count($tokens); $i < $j; $i++) { 
        if (is_string($tokens[$i])) { 
            $last_space = false; 
            $stripStr  .= $tokens[$i]; 
        } else { 
            switch ($tokens[$i][0]) { 
                //过滤各种PHP注释 
                case T_COMMENT: 
                case T_DOC_COMMENT: 
                    break; 
                //过滤空格 
                case T_WHITESPACE: 
                    if (!$last_space) { 
                        $stripStr  .= ' '; 
                        $last_space = true; 
                    } 
                    break; 
                case T_START_HEREDOC: 
                    $stripStr .= "<<<THINK\n"; 
                    break; 
                case T_END_HEREDOC: 
                    $stripStr .= "THINK;\n"; 
                    for($k = $i+1; $k < $j; $k++) { 
                        if(is_string($tokens[$k]) && $tokens[$k] == ';') { 
                            $i = $k; 
                            break; 
                        } else if($tokens[$k][0] == T_CLOSE_TAG) { 
                            break; 
                        } 
                    } 
                    break; 
                default: 
                    $last_space = false; 
                    $stripStr  .= $tokens[$i][1]; 
            } 
        } 
    } 
    return $stripStr; 
} 
最后修改:2019 年 10 月 03 日
如果觉得我的文章对你有用,请随意赞赏