php去除注释和空格的函数

虽然php5中已有php_strip_whitespace方法可以返回删除注释和空格后的PHP源码的功能,为了学习,这里为大家提供一个自己的方法,也可以去除代码中的空白和注释,代码如下:

//PHP5内置函数:
//返回删除注释和空格后的PHP源码
php_strip_whitespace(String $fileName);
//

自定函数:

/*
* string $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; 
}

$file = file_get_contents('test.php');
$content = strip_whitespace($file);

$myfile = fopen("ceshi.php", "w");
fwrite($myfile, $content);
fclose($myfile);
联系我们

邮箱 626512443@qq.com
电话 18611320371(微信)
QQ群 235681453

Copyright © 2015-2024

备案号:京ICP备15003423号-3