//////////////////////////////////////////////////////////
// Рекурсивная функция - спускаемся вниз по каталогу
//////////////////////////////////////////////////////////
function scan_dir($dirname)
{
// Объявляем переменные замены глобальными
GLOBAL $extentions, $count;
// Открываем текущую директорию
// Читаем в цикле директорию
while (($file = readdir($dir)) !== false) {
// Если файл обрабатываем его содержимое
if($file != "." && $file != "..")
{
// Если имеем дело с файлом - производим в нём замену
{
// Извлекаем из имени файла расширение
$ext = strrchr($dirname."/".$file, "."); foreach($extentions as $exten)
{
// Читаем содержимое файла
$content = file($dirname."/".$file); // Подсчтываем число файлов
$count += count($content); // Удаляем массив
}
}
// Если перед нами директория, вызываем рекурсивно
// функцию scan_dir
if(is_dir($dirname."/".$file)) {
scan_dir($dirname."/".$file);
}
}
}
// Закрываем директорию
}
/*
Воспользоваться результатами можно при помощи следующего кода
Код вызова функции scan_dir()*/
// Имя корневой директории проекта
$dirname = "softtime";
// Массив с расширениями файлов, для которых следует подсчитывать
// число строк
$extentions = array("#\.php#i"); // $extentions = array("#\.cpp#i","#\.h#i");
// Счётчик строк - глобальная переменная
$count = 0;
// Вызов функции, осуществляющей рекурсивный спуск по подкаталогам
// корневого каталога
scan_dir($dirname);
// Записываем число строк в переменную $count