facebook twitter hatena line email

Php/ツール/行末が\r\nであるファイルの検出

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
<?php
function detectCRLF($dir)
{
    $rii = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir));
    
    $crlfFiles = [];
    foreach ($rii as $file) {
        if ($file->isDir()) {
            continue;
        }
        
        if (pathinfo($file, PATHINFO_EXTENSION) === 'php') {
            $content = file_get_contents($file->getPathname());
            if (preg_match("/\r\n/", $content)) {
                $crlfFiles[] = $file->getPathname();
            }
        }
    }
    
    if (count($crlfFiles) > 0) {
        echo "CRLF detected in the following PHP files:\n";
        foreach ($crlfFiles as $file) {
            echo $file . "\n";
        }
    } else {
        echo "No PHP files with CRLF line endings found.";
    }
}

// 実行
$directory = $argv[1] ?? '.'; // コマンドライン引数が指定されていなければカレントディレクトリ

detectCRLF($directory);