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);
|