_rx=$regex; $this->_onlyFiles=$onlyFiles; $this->_onlyDirs=$onlyDirs; } public function accept() { $inner=$this->getInnerIterator(); if ($inner->isDot()) return false; if ($this->_onlyDirs) if (!$inner->isDir()) return false; if ($this->_onlyFiles) if ($inner->isDir()) return false; if ($this->_rx) return ereg($this->_rx, $inner->getFileName()); return true; } public function key() { return $this->getInnerIterator()->getPathname(); } } class RecursiveDirectoryIteratorFilter extends DirectoryIteratorFilter { public function __construct($path, $regex=null, $onlyFiles=0) { parent::__construct(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path, RecursiveDirectoryIterator::KEY_AS_PATHNAME), RecursiveIteratorIterator::CHILD_FIRST), $regex, $onlyFiles); } } class RecursiveFileIteratorFilter extends RecursiveDirectoryIteratorFilter { public function __construct($path, $regex=null) { parent::__construct($path, $regex, 1); } } $dir = '.'; function fix_bom($fn) { $file = fopen($fn, 'rb+'); if ($file) { $bom = fread($file, 3); if ($bom == ( chr(0xEF) . chr(0xBB) . chr(0xBF) )) { echo $fn."
"; $data = ''; while (!feof($file)) $data .= fread($file, 8192); rewind($file); fwrite($file, $data); } fclose($file); } } $it=new RecursiveFileIteratorFilter(dirname(__FILE__), ".php$"); foreach ($it as $itFile) { fix_bom($itFile->getPath()."/".$itFile->getFileName()); }