| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 | 
							- <?php
 
- namespace app\common\command;
 
- use think\console\Command;
 
- use think\console\Input;
 
- use think\console\input\Argument;
 
- use think\console\input\Option;
 
- use think\console\Output;
 
- class CheckBOM extends Command
 
- {
 
-     
 
-     protected function configure()
 
-     {
 
-         $this->setName('CheckBOM')
 
-             ->addArgument('basedir', Argument::OPTIONAL, "base dir", ".")
 
-             ->addOption('rewrite', 'r', Option::VALUE_NONE, 'delete bom')
 
-             ->setDescription('check files if has bom');
 
-     }
 
-     protected function execute(Input $input, Output $output)
 
-     {
 
-         $basedir = $input->getArgument("basedir");
 
-         $this->runDir($basedir, $output, $input->hasOption('rewrite'));
 
-     }
 
-     private function runDir($basedir, $output, $rewrite)
 
-     {
 
-         if (file_exists($basedir)) {
 
-             if ($dh = opendir($basedir)) {
 
-                 while (($file = readdir($dh)) !== false) {
 
-                     if ($file != '.' && $file != '..') {
 
-                         $path = $basedir . DS . $file;
 
-                         if (!is_dir($path)) {
 
-                             $res = $this->checkBOM($path, $rewrite);
 
-                             if ($res != "ok")
 
-                                 $output->writeln($path . ' - ' . $res);
 
-                         } else {
 
-                             $this->runDir($path, $output, $rewrite);
 
-                         }
 
-                     }
 
-                 }
 
-                 closedir($dh);
 
-             }
 
-         }
 
-     }
 
-     private function checkBOM($filename, $rewrite = false)
 
-     {
 
-         $contents = file_get_contents($filename);
 
-         $charset[1] = substr($contents, 0, 1);
 
-         $charset[2] = substr($contents, 1, 1);
 
-         $charset[3] = substr($contents, 2, 1);
 
-         if (ord($charset[1]) == 239 && ord($charset[2]) == 187 && ord($charset[3]) == 191) {
 
-             if ($rewrite) {
 
-                 $rest = substr($contents, 3);
 
-                 $this->rewrite($filename, $rest);
 
-                 return ('BOM found, automatically removed');
 
-             } else {
 
-                 return ('BOM found');
 
-             }
 
-         } else {
 
-             return ("ok");
 
-         }
 
-     }
 
-     private function rewrite($filename, $data)
 
-     {
 
-         $filenum = fopen($filename, "w");
 
-         flock($filenum, LOCK_EX);
 
-         fwrite($filenum, $data);
 
-         fclose($filenum);
 
-     }
 
- }
 
 
  |