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);
}
}
}
?>