php去除代码中的空格和注释函数

作者:Liaodeity - 2015年07月31日

在看ThinkPHP源码的时候,发现了一个去除空格和注释的函数,感觉还不错,就截取来用。

经过证实是可以实现去除注释的,原来函数还会对heredoc 语法进行替换的,我去除了,经过测试,没什么影响。

函数

/**
 * 去除代码中的空白和注释
 * @param string $content 代码内容
 * @return string
 * @author [建百站www.jianbaizhan.com]
 */
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;
                default:
                    $last_space = false;
                    $stripStr  .= $tokens[$i][1];
            }
        }
    }
    return $stripStr;
}

函数用法

$str = file_get_contents(__FILE__);
$http = strip_whitespace($str);
echo htmlspecialchars($http);


本文作者: Liaodeity

本文链接: https://www.jianbaizhan.com/article/249

版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!


 请勿发布不友善或者负能量的内容。审查将对发布广告等违规信息进行处罚!