July 03, 2009 14:31 / 0 comments / php source-code

Here's a short function to count code in a directory (recursively scans all subdirectories).

<?php

    function countCode ($directory, $skip_blank = false) {

        if (substr($directory, -1, 1) == '/') {
            $directory = substr($directory, 0, strlen($directory) - 1);
        }

        // recursively scan directory and retrieve files
        if ($handle = opendir($directory)) {

            while (false !== ($file = readdir($handle))) {

                if ($file != '..' && $file != '.') {

                    if (preg_match('|\.php$|i', $file) && is_file($directory. '/' .$file)) {

                        if (!$skip_blank) {

                            $line_count = count(file($directory. '/' .$file));

                        } else {

                            $line_count = count(file($directory. '/' .$file, 
                                FILE_SKIP_EMPTY_LINES | FILE_IGNORE_NEW_LINES));

                        }

                        $lines += $line_count;

                    } elseif (is_dir($directory. '/' .$file)) {

                        $lines += countCode($directory. '/' .$file, $skip_blank);

                    }

                }

            }

            return $lines;

        }

    }

    echo 'Code in this directory: ', countCode('/var/www/', false);

?>

Comments (0)

Commenting has been closed, but please feel free to contact me