您的位置:首页 > 编程语言

浏览文件神器!且可以计算所有文件代码的行数!

2014-09-12 16:25 441 查看

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>\n";
$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>\n";
$listOutput .= " </TR>\n";
}
$usedDir[] = $this->cnt[$i]['dir'];
}
if ($output==1) {
$listOutput .= " <TR>\n";
$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>\n";
$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>\n";
$listOutput .= " </TR>\n";
}
}

$totalFiles = number_format(count($this->cnt));
$totalLines = number_format($totalLines);
$totalFolders = number_format(count($usedDir));

if ($output==1) {

print "<CENTER>\n";
print "<B><FONT STYLE=\"font-family: arial; font-size: 13pt\">".$this->dir."</B></FONT><BR><BR>\n\n";
print "<TABLE WIDTH=\"85%\" BORDER=\"0\" CELLPADDING=\"10\" CELLSPACING=\"0\">\n";
print " <TR>\n";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>\n";
print " </TR>\n";情侣图片
print "</TABLE>\n";
print "<TABLE WIDTH=\"85%\" CELLPADDING=\"6\" CELLSPACING=\"1\" STYLE=\"border-top: 1px solid #CCCCCC; border-left: 1px solid #CCCCCC\">\n";
print " <TR>\n";
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>\n";
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>\n";
print " </TR>\n";

print $listOutput;

print "</TABLE>\n";
print "<TABLE WIDTH=\"85%\" BORDER=\"0\" CELLPADDING=\"10\" CELLSPACING=\"0\">\n";
print " <TR>\n";
print " <TD WIDTH=\"10%\" ALIGN=\"left\"><FONT STYLE=\"font-family: arial; font-size: 11pt\"><B>简述:</B> ".$totalFolders."文件夹, ".$totalFiles."文件, ".$totalLines."行代码</FONT></TD>\n";
print " </TR>\n";
print "</TABLE>\n";
print "</CENTER>\n";

} else {

return array("files"=>$totalFiles,"lines"=>$totalLines,"folders"=>$totalFolders);

}

}

}

?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐