zoukankan      html  css  js  c++  java
  • 浏览文件神器!且可以计算所有文件代码的行数!

    1. [图片] 201312051416305445.jpg    


    ​2. [代码]demo     

    //http://www.codepearl.com
    header("Content-type: text/html; charset=UTF-8");
    include("class.lineCount.php"); 
     
    ?>
    <HTML>
    <HEAD>
        <TITLE>Source Code Count</TITLE>
    </HEAD>
     
     
    <BODY BGCOLOR="#FFFFFF">
     
    <?
     
        $lineCount = new lineCount;
     
     
        // If no directory is given, it will use the directory of the script
     
            $lineCount->dir="../linecount";
     
     
        // Use this method to output the summary and list of files to the page
        // You can customize the HTML from within the class
     
            $lineCount->summary(1);
     
     
     
        // Use this method to get the totals as an associative array:
     
            $totals = $lineCount->summary(0);
     
            # echo $totals["folders"] / $totals["files"] / $totals["lines"]
     
    ?>
     
     
    </BODY>
    </HTML>
    3. [代码]操作类     

    //http://www.codepearl.com
    header("Content-type: text/html; charset=UTF-8");
     
        class lineCount {
     
            // Don't modify these
     
                var $x   = 0;
                var $cnt = array();
     
     
     
            // Files to include in the count
     
                var $ext = array("php","phtml","php3","inc","js","html","htm","css","doc");
     
     
            // If no directory is set, the directory of the script will be used
     
                var $dir = "";
     
     
     
     
            function countLines($dir) {
                 
                if (is_dir($dir)) {
                    $dir=iconv("gb2312","GBK",$dir);
                    if ($handle = opendir($dir)) {
     
                        // Loop through files
     
                        while (false !== ($file = readdir($handle))) { 
                            if ($file != "." && $file != "..") { 
     
                                $filePath = $dir."/".$file;
     
                                if (is_dir($filePath)) {
     
                                    // Item is another folder, call the function again
     
                                    $this->countLines($filePath);
     
                                } else {
     
                                    // Item is a file, get some info about it
     
                                    $fileName = explode("/",$filePath);
                                    $fileDir  = $fileName[(count($fileName)-2)];
                                    $fileName = $fileName[(count($fileName)-1)];
                                    $fileExt  = explode(".",$fileName);
                                    $fileExt  = $fileExt[(count($fileExt)-1)];
     
                                    if (in_array($fileExt,$this->ext)) {
     
                                        // Open the file, get line count
     
                                        $fp           = fopen($filePath, "r");
                                        $buffer       = rawurlencode(fread($fp, filesize($filePath)));
                                        $buffer       = explode("%0A", $buffer);
                                        $numLines     = count($buffer);
                                        fclose($fp);
     
                                        // Add the information to our count array
     
                                        $this->cnt[$this->x]['dir']   = $dir;
                                        $this->cnt[$this->x]['file']  = $fileName;
                                        $this->cnt[$this->x]['count'] = $numLines;
                                        $this->x++;
     
                                    }
                                }
     
                            } 
                        }
     
                        closedir($handle);
     
                    } else {
     
                        return false;
     
                    }
     
                } else {
     
                    return false;
     
                }
     
            }
     
     
     
            function summary($output=1) {
     
                // $output
                //    1 to generate a summary and file list
                //    0 to get an associative array with the totals
     
                if (!(is_dir($this->dir))) { 
                    // No directory given, use document root
                    $this->dir = $_SERVER['DOCUMENT_ROOT'];
                }
     
                $this->countLines($this->dir);
     
     
                $listOutput = "";
                $totalLines = 0;
                $usedDir    = array();
     
                for ($i=0;$i<count($this->cnt);$i++) {
     
                    $totalLines += $this->cnt[$i]['count'];
     
                    if (!(in_array($this->cnt[$i]['dir'],$usedDir))) {
                        if ($output==1) {
                            $listOutput .= "    <TR> ";
                            $listOutput .= "        <TD COLSPAN="2" BGCOLOR="#EEEEEE" WIDTH="100%" ALIGN="left" STYLE="border-bottom: 1px solid #CCCCCC; border-right: 1px solid #CCCCCC"><FONT STYLE="font-family: arial; font-size: 9pt"><B>".iconv("GB2312","UTF-8",$this->cnt[$i]['dir'])."</B></FONT></TD> ";
                            $listOutput .= "    </TR> ";
                        }
                        $usedDir[] = $this->cnt[$i]['dir'];
                    }
                    if ($output==1) {
                        $listOutput .= "    <TR> ";
                        $listOutput .= "        <TD WIDTH="80%" ALIGN="left" STYLE="border-bottom: 1px solid #CCCCCC; border-right: 1px solid #CCCCCC"><FONT STYLE="font-family: arial; font-size: 9pt">".iconv("GB2312","UTF-8",$this->cnt[$i]['file'])."</FONT></TD> ";
                        $listOutput .= "        <TD WIDTH="20%" ALIGN="center" STYLE="border-bottom: 1px solid #CCCCCC; border-right: 1px solid #CCCCCC"><FONT STYLE="font-family: arial; font-size: 9pt">".number_format($this->cnt[$i]['count'])."</FONT></TD> ";
                        $listOutput .= "    </TR> ";
                    }
                }
     
                $totalFiles   = number_format(count($this->cnt));
                $totalLines   = number_format($totalLines);
                $totalFolders = number_format(count($usedDir));
     
     
     
                if ($output==1) {
     
                    print "<CENTER> ";
                    print "<B><FONT STYLE="font-family: arial; font-size: 13pt">".$this->dir."</B></FONT><BR><BR> ";
                    print "<TABLE WIDTH="85%" BORDER="0" CELLPADDING="10" CELLSPACING="0"> ";
                    print " <TR> ";http://www.huiyi8.com/qinglv/​
                    print "     <TD WIDTH="10%" ALIGN="left"><FONT STYLE="font-family: arial; font-size: 11pt"><B>简述:</B> ".$totalFolders."文件夹, ".$totalFiles."文件, ".$totalLines." 行代码</FONT></TD> ";
                    print " </TR> ";情侣图片
                    print "</TABLE> ";
                    print "<TABLE WIDTH="85%" CELLPADDING="6" CELLSPACING="1" STYLE="border-top: 1px solid #CCCCCC; border-left: 1px solid #CCCCCC"> ";
                    print " <TR> ";
                    print "     <TD WIDTH="80%" ALIGN="left" BGCOLOR="#4C6177" STYLE="border-bottom: 1px solid #182C41; border-right: 1px solid #182C41"><FONT STYLE="font-family: arial; font-size: 11pt; color: #FFFFFF"><B>文件名/目录</B></FONT></TD> ";
                    print "     <TD WIDTH="20%" ALIGN="center" BGCOLOR="#4C6177" STYLE="border-bottom: 1px solid #182C41; border-right: 1px solid #182C41"><FONT STYLE="font-family: arial; font-size: 11pt; color: #FFFFFF"><B>代码行数</B></FONT></TD> ";
                    print " </TR> ";
     
                        print $listOutput;
     
                    print "</TABLE> ";
                    print "<TABLE WIDTH="85%" BORDER="0" CELLPADDING="10" CELLSPACING="0"> ";
                    print " <TR> ";
                    print "     <TD WIDTH="10%" ALIGN="left"><FONT STYLE="font-family: arial; font-size: 11pt"><B>简述:</B> ".$totalFolders."文件夹, ".$totalFiles."文件, ".$totalLines."行代码</FONT></TD> ";
                    print " </TR> ";
                    print "</TABLE> ";
                    print "</CENTER> ";
     
                } else {
     
                    return array("files"=>$totalFiles,"lines"=>$totalLines,"folders"=>$totalFolders); 
     
                }
     
            }
     
     
        }
     
    ?>
  • 相关阅读:
    mysql 主从服务器配置
    Linux命令
    Kali
    Python进阶
    性能测试工具
    sphinx搜索
    页面静态化
    PHP API接口
    线程的生命周期
    多线程的创建
  • 原文地址:https://www.cnblogs.com/xkzy/p/3968624.html
Copyright © 2011-2022 走看看