百度了一些前辈写的 稍微改了下
function GetCodeLineNumber($fileDirectory = '')
{
$line = 0;// 行数
global $line;
// 需要统计的文件后缀
$need = ['php'];
// 过滤的文件夹
$filtering = ['vendor', 'static', 'runtime', 'web'];
$arr = scandir($fileDirectory);
$dirArr = [];
foreach ($arr as $value) {
//转换中文目录编码
@$dirArr[] = iconv("gbk", "utf-8", $value);
}
foreach ($dirArr as $v) {
$filename = $fileDirectory . '\\' . $v;
if ($v != '.' && $v != '..') {
if (is_dir($filename)) {
// 过滤不需要统计的目录
if (in_array($v, $filtering)) {
continue;
}
GetCodeLineNumber($filename); // 判断是不是一个目录,是的话递归调用
} else {
$extension = pathinfo($v, PATHINFO_EXTENSION); // 截取后缀名
if (in_array($extension, $need)) {
// 打开文件 支持中文文件
$fp = fopen(iconv('UTF-8', 'GBK', $filename), 'r');
// 读取行数
while (stream_get_line($fp, 8192, "\n")) {
$line++;
}
// 关闭文件
fclose($fp);
}
}
}
}
return $line;
}