Rumah > php教程 > php手册 > 浏览文件神器!且可以计算所有文件代码的行数!

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

WBOY
Lepaskan: 2016-06-06 19:32:34
asal
981 orang telah melayarinya

这个类可以列出文件的详细内容,统计一个目录下总代码行,你可以根据你的需要修改被统计的文件类型。 还可以限制统计类型 var$ext=array(php,phtml,php3,inc,js,html,htm,css,doc); 代码珠玑:http://www.codepearl.com/files/198.html PHP 源码与演示: 源码

  这个类可以列出文件的详细内容,统计一个目录下总代码行,你可以根据你的需要修改被统计的文件类型。

还可以限制统计类型
var $ext = array("php","phtml","php3","inc","js","html","htm","css","doc");
代码珠玑:http://www.codepearl.com/files/198.html PHP

源码与演示:源码出处 演示出处

浏览文件神器!且可以计算所有文件代码的行数! 浏览文件神器!且可以计算所有文件代码的行数!
<? 
//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>
Salin selepas log masuk
<?
//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";
				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); 

			}

		}


	}

?>
Salin selepas log masuk
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Cadangan popular
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan