www.gusucode.com > KPPW众包威客PHP开源建站系统 v3.0源码程序 > KPPW/stripComment.php
<?php class stripComment { function run($path){ if (is_dir($path)) { $files = $this->getfiles($path); foreach ($files as $file) { if (file_exists($file)) { $content = file_get_contents($file); $content = $this->stripWhitespace($content); file_put_contents($file, $content); echo "Strip file:[".$file."] comment success!\r\n"; } else { echo "File:[".$file."] is not exists!\r\n"; } } } else { echo "Dir:[".$path."] is not exists!\r\n"; } } /** * 去除代码中的空白和注释 * @param string $content 代码内容 * @return string */ function stripWhitespace($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: $stripStr .= "\r\n"; break; 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; } /** * 遍历获取目录下的指定类型的文件 * @param $path * @param array $files * @return array */ function getfiles( $path , &$files = array() ) { if ( !is_dir( $path ) ) return null; $handle = opendir( $path ); while ( false !== ( $file = readdir( $handle ) ) ) { if ( $file != '.' && $file != '..' ) { $path2 = $path . '/' . $file; if ( is_dir( $path2 ) ) { $this->getfiles( $path2 , $files ); } else { if ( preg_match( "/\.(php)$/i" , $file ) ) { $files[] = $path2; } } } } return $files; } } $stripComment = new stripComment(); //$stripComment->run(dirname(__FILE__).'/envCheck1.php'); // //$files = $stripComment->getfiles(dirname(__FILE__).'/Task'); //var_dump($files); $stripComment->run(dirname(__FILE__).'/app/Modules'); $stripComment->run(dirname(__FILE__).'/app/Http');