统计代码行数和过滤注释 - PHP 源码
- #!/usr/local/bin/php -f
- <?php
- /// 获取命令行参数
- $fileName = $argv[1];
- if ( ! is_dir( $fileName ) && ! file_exists( $fileName ) ) {
- echo "Usage:".$argv[0]."[path|file]\n";
- exit;
- }
- $disableFile = "DMO|test_|FileZip|jpgraph|smarty|tourdata|demo_|Frame|socket.php|IDNA2.php|timezone.php|config.db.php|config.php";
- $disableFile .= "|main1.php|obj.php|interface.php|hmac.php|php-excel.class.php|cfg.class.php|global.php|gconfig.php|main2.php|sinfo.php";
- $disableFile .= "|main.php|index.php|mod_tpl.php|redis.lua|^_";
- $disableDir = "cache$|templates$|templates_c$|adodb$|smarty$|mailer$|biz$|test$";
- $ext = "\.php$|\.c$|\.h$|\.go$|\.lua$";
- if ( is_dir( $fileName ) ) {
- getDir( $fileName );
- } else {
- echoCode( $fileName );
- }
- function echoCode( $fileName ) {
- $fileLines = file( $fileName );
- $lineCount = 0;
- foreach( $fileLines AS $line ) {
- $line = str_replace( "\t", " ", $line );
- $tr = trim( $line );
- if ( preg_match( "/\\*|^\*|^ {1,}\*|\/\*|\*\/|^ {1,}\/\/|^\/\//", $line ) || $tr === "" ) {
- continue;
- }
- $lineCount++;
- $line = str_replace( "\r", "", $line );
- $line = str_replace( "\n", "", $line );
- echo "".$line."\n";
- }
- echo "\n";
- }
- function getDir( $path ) {
- global $disableFile, $disableDir, $ext;
- $dDirs = dir( $path );
- while ( false !== ( $fileDirs = $dDirs--->read() ) ) {
- $sCodeFile = $path . "/".$fileDirs;
- if ( $fileDirs == "." || $fileDirs == ".." || preg_match("/".$disableDir."/", $fileDirs ) ) {
- continue;
- }
- if ( ! is_dir( $sCodeFile ) && ! file_exists( $sCodeFile ) ) {
- continue;
- }
- if ( preg_match( "/".$disableFile."/", $fileDirs ) ||
- ( ! is_dir( $sCodeFile ) && ! preg_match( "/".$ext."/", $fileDirs ) ) ) {
- continue;
- }
- if ( is_dir( $sCodeFile ) ) {
- getDir( $sCodeFile );
- continue;
- } else {
- //echo $sCodeFile."\n";
- echo iconv( "UTF-8", "GBK", "文件名:").$fileDirs."\n";
- //echo "文件名:".$fileDirs."\n";
- echoCode( $sCodeFile );
- }
- }
- }
- ?>
来源: https://www.php1.cn/detail/php-e86d840d68.html