最近提交软著资料,有一项是让你填写软件源码行数,以及将源代码放置在文件中提交给他们。
相信大家都懒得一个个文件去打开复制吧,还有计算源码行数也是挺麻烦的事情,那么我就找了网上源码,加上自己修改,下面代码就能解决这些问题。
获取源码行数:
// 行数 $line = 0; // 需要统计的文件类型 $arr = array("php", "html", "css", "js", "tpl", "wxml", "jizhi"); // 过滤的文件夹 $filtering = array("wamplangues", "ckeditor", "wampthemes", "wordpress", "dede", "thinkphp"); // 遍历目录 function getsource($dirname) { global $arr; global $filtering; global $line; // 扫描目录下的文件和目录 $dirArr = scandir($dirname); // 遍历目录 foreach($dirArr as $v) { //组合文件或文件夹的路径 $filename = $dirname.'\\'.$v; // . 表示本层目录, .. 表示上层目录 if ($v != '.' && $v != '..') { // 判断是不是一个目录,是的话递归调用 if (is_dir($filename)) { // 过滤不需要统计的目录 if (in_array($v, $filtering)) { continue; } getsource($filename); } else { // 截取后缀名 $extension = pathinfo($v,PATHINFO_EXTENSION); // 比较后缀名是否在统计的文件类型里 if (in_array($extension, $arr)) { // 打开文件 $fp = fopen($filename, 'r'); // 读取行数 while(stream_get_line($fp,8192,"\n")) { $line ++; } // 关闭文件 fclose($fp); } } } } } // 执行方法,参数为项目路径 getsource("C:\Users\Administrator\Desktop\developer\jizhicms\jizhicms"); // 打印行数 echo $line;
获取软件源代码:
// 行数 $line = 0; $webpath = "C:\Users\Administrator\Desktop\developer\jizhicms\jizhicms"; // 需要统计的文件类型 $arr = array("php", "html", "css", "js", "tpl", "wxml", "jizhi"); // 过滤的文件夹 $filtering = array("wamplangues", "ckeditor", "wampthemes", "wordpress", "dede", "thinkphp"); // 遍历目录 function getsource($dirname) { global $arr; global $filtering; global $line; global $webpath; // 扫描目录下的文件和目录 $dirArr = scandir($dirname); // 遍历目录 foreach($dirArr as $v) { //组合文件或文件夹的路径 $filename = $dirname.'\\'.$v; // . 表示本层目录, .. 表示上层目录 if ($v != '.' && $v != '..') { // 判断是不是一个目录,是的话递归调用 if (is_dir($filename)) { // 过滤不需要统计的目录 if (in_array($v, $filtering)) { continue; } getsource($filename); } else { // 截取后缀名 $extension = pathinfo($v,PATHINFO_EXTENSION); // 比较后缀名是否在统计的文件类型里 if (in_array($extension, $arr)) { $res = file_get_contents($filename); $res = explode("\n",$res); echo '// 文件名:'.str_replace($webpath.'\\','',$filename).' 代码如下:<br>'; foreach($res as $l){ if($l && trim($l)){ $line++; $l=htmlspecialchars(trim($l), ENT_QUOTES); if(version_compare(PHP_VERSION,'7.4','>=')){ $l = addslashes($l); }else{ if(!get_magic_quotes_gpc())$value = addslashes($l); } echo $l.'<br>'; } } } } } } } // 执行方法,参数为项目路径 getsource($webpath);