揮発性のメモ2

http://d.hatena.ne.jp/iww/

BOMありファイルを探す

頭から何バイトか読み出して、

  • 先頭が0xEFだったら BOMあり
  • CR+LFがあったら CR+LF
  • #や<で始まってなければ ソースじゃない

と看做して引っ掛かったファイルの一覧を作成する

#!/usr/bin/php -q
<?
array_shift($argv);

while( $f=array_shift($argv) ){
    if($fp = fopen($f,"r")){
        $str = fread($fp,20);

        if( preg_match('/^\xef/', $str) ) echo("$f: BOMあり\n");
        if( preg_match('/\x0d\x0a/', $str) ) echo("$f: CRLF\n");

        $flag_p = preg_match('/^#/', $str);
        $flag_h = preg_match('/^</', $str);
        if( (!$flag_p) && (!$flag_h) ) echo("$f: ソースじゃない\n");

        fclose($fp);
    }
}
find -name "*.php" | xargs ./bom.php