61 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
		
		
			
		
	
	
			61 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| 
								 | 
							
								<?php
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								//本脚本为将特定目录下的所有源码文件去掉空格、空行,并在当前脚本所在位置生成一个docx文件,里面是所有源码字符串的集合,用来提供申请软著的源码文件。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								//源码文件路径(可多个)
							 | 
						|||
| 
								 | 
							
								$paths = [
							 | 
						|||
| 
								 | 
							
								    'F:\code_project\back_end\php\git_depository\new-diverse-youth-night-school-backend\NewDiverseYouthNightSchool\application\api\controller\school\newactivity',
							 | 
						|||
| 
								 | 
							
								    'F:\code_project\back_end\php\git_depository\new-diverse-youth-night-school-backend\NewDiverseYouthNightSchool\application\api\controller\school\newworker',
							 | 
						|||
| 
								 | 
							
								    'F:\code_project\back_end\php\git_depository\new-diverse-youth-night-school-backend\NewDiverseYouthNightSchool\application\api\controller\school\NewActivity.php',
							 | 
						|||
| 
								 | 
							
								];
							 | 
						|||
| 
								 | 
							
								//输出文件路径
							 | 
						|||
| 
								 | 
							
								$out_path = '.\out.docx';
							 | 
						|||
| 
								 | 
							
								//源码文件后缀数组
							 | 
						|||
| 
								 | 
							
								$exts = ["php","js","html"];
							 | 
						|||
| 
								 | 
							
								//过滤的正则
							 | 
						|||
| 
								 | 
							
								//去掉空格、空行
							 | 
						|||
| 
								 | 
							
								//$filter = '/\s(?=\s)/';
							 | 
						|||
| 
								 | 
							
								//保留原格式,包括其他行的回车换行符,只去除无内容的行
							 | 
						|||
| 
								 | 
							
								$filter = '/\s(?!\S)/';
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								//遍历目录下所有文件(递归函数遍历文件数,不漏掉深层文件)
							 | 
						|||
| 
								 | 
							
								function get_all_files($path)
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								    $files = array();
							 | 
						|||
| 
								 | 
							
								    if (is_dir($path)) {
							 | 
						|||
| 
								 | 
							
								        $fh = opendir($path);
							 | 
						|||
| 
								 | 
							
								        while (false !== ($file = readdir($fh))) {
							 | 
						|||
| 
								 | 
							
								            if ($file != '.' && $file != '..') {
							 | 
						|||
| 
								 | 
							
								                if (is_dir($path . '/' . $file)) {
							 | 
						|||
| 
								 | 
							
								                    $files = array_merge($files, get_all_files($path . '/' . $file));
							 | 
						|||
| 
								 | 
							
								                } else {
							 | 
						|||
| 
								 | 
							
								                    $files[] = $path . '/' . $file;
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								    return $files;
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								//源码字符串
							 | 
						|||
| 
								 | 
							
								$str = '';
							 | 
						|||
| 
								 | 
							
								$files = [];
							 | 
						|||
| 
								 | 
							
								foreach ($paths as $path) {
							 | 
						|||
| 
								 | 
							
								    $files = array_merge($files, get_all_files($path));
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								//遍历目录下所有文件
							 | 
						|||
| 
								 | 
							
								foreach ($files as $file) {
							 | 
						|||
| 
								 | 
							
								    //判断文件后缀是否在数组中
							 | 
						|||
| 
								 | 
							
								    if (in_array(substr(strrchr($file, '.'), 1), $exts)) {
							 | 
						|||
| 
								 | 
							
								        //得到文件内容
							 | 
						|||
| 
								 | 
							
								        $file_content = file_get_contents($file);
							 | 
						|||
| 
								 | 
							
								        //去掉空格、空行
							 | 
						|||
| 
								 | 
							
								        $file_content = preg_replace($filter, '', $file_content);
							 | 
						|||
| 
								 | 
							
								        $str .= $file_content;
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								//写入文件
							 | 
						|||
| 
								 | 
							
								if($str)file_put_contents($out_path, $str);
							 |