PHP批量获取源码行数及获取文件源代码

热度:3032021-01-27 11:07 收藏 0 点赞 0

最近提交软著资料,有一项是让你填写软件源码行数,以及将源代码放置在文件中提交给他们。

相信大家都懒得一个个文件去打开复制吧,还有计算源码行数也是挺麻烦的事情,那么我就找了网上源码,加上自己修改,下面代码就能解决这些问题。

获取源码行数:

// 行数
$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);


暂无评论
登录后才可以评论~立即登录

如何获取资源?

您可以关注底部公众号,回复文章提示的 “ 关键词 ” 获取对应资源。

每日分享

每日分享收集的网络资源,其中包含开源项目、小工具、常用软件,以及音频视频、电子书籍等。

外卖天天领红包,饿了么,美团红包天天都有!

外卖天天领红包,饿了么,美团红...

最低每顿可省2元

分享两个远程工具-ToDesk和向日葵

分享两个远程工具-ToDesk和向日葵...

在工作生活中经常用到远程,QQ远程很卡,第三方远程工具就比较方便了。

爱奇艺万能播放器2018年完整版

爱奇艺万能播放器2018年完整版

2018年的爱奇艺万能播放器,功能齐全,没有广告!

分享500套个人求职简历模板

分享500套个人求职简历模板

500套免费求职简历下载!

一款最近很火的自动跳过广告APP,无root直装版

一款最近很火的自动跳过广告APP,...

自动跳过广告,无需root

WPS免费去广告电脑软件

WPS免费去广告电脑软件

wps广告实在太多了,下载一个去广告版本