반응형
FindFile.class.php
디렉터리 파일 사이를 옮겨다니기
<?php
/** 폴더와 파일 클래스 이동
* Date: 2013-03-21
* Author: fdipzone
* Ver: 1.0
*/
class FindFile{
public $files = array(); // 모든 파일 저장
protected $maxdepth; //검색 깊이, 0은 제한이 없음을 나타냅니다
/* 파일과 폴더를 탐색합니다
* @param String $spath 폴더 경로
* @param int $maxdepth 검색 깊이, 모든 기본 검색
*/
public function process($spath, $maxdepth=0){
if(isset($maxdepth) && is_numeric($maxdepth) && $maxdepth>0){
$this->maxdepth = $maxdepth;
}else{
$this->maxdepth = 0;
}
$this->files = array();
$this->traversing($spath); // 곳곳을 누비다
}
/* 파일과 폴더를 탐색합니다
* @param String $spath 폴더 경로
* @param int $depth 현재 폴더 깊이
*/
private function traversing($spath, $depth=1){
if($handle = opendir($spath)){
while(($file=readdir($handle))!==false){
if($file!='.' && $file!='..'){
$curfile = $spath.'/'.$file;
if(is_dir($curfile)){ // dir
if($this->maxdepth==0 || $depth<$this->maxdepth){ // 判断深度
$this->traversing($curfile, $depth+1);
}
}else{ // file
$this->handle($curfile);
}
}
}
closedir($handle);
}
}
/** 파일 처리 방법
* @param String $file 파일 경로
*/
protected function handle($file){
array_push($this->files, $file);
}
}
?>
UnsetBom.class.php utf8+bom 파일을 지우는 bom, 즉 처음 3바이트 0에 0xBB 0? FindFile 클래스를 상속받음
<?php
/** 모든 서류를 넘나들며 utf8+bom 0xBB 0 제거
* Date: 2013-03-21
* Author: fdipzone
* Ver: 1.0
*/
class UnsetBom extends FindFile{
private $filetype = array(); // 처리할 파일 형식
//초기화
public function __construct($filetype=array()){
if($filetype){
$this->filetype = $filetype;
}
}
/** FindFile handle 메서드 다시 쓰기
* @param String $file 파일 경로
*/
protected function handle($file){
if($this->check_ext($file) && $this->check_utf8bom($file)){ // utf8+bom
$this->clear_utf8bom($file); // clear
array_push($this->files, $file); // save log
}
}
/** 파일이 utf8+bom인지 확인합니다
* @param String $file 파일 경로
* @return boolean
*/
private function check_utf8bom($file){
$content = file_get_contents($file);
return ord(substr($content,0,1))===0xEF && ord(substr($content,1,1))===0xBB && ord(substr($content,2,1))===0xBF;
}
/** 지우기utf8+bom
* @param String $file 파일 경로
*/
private function clear_utf8bom($file){
$content = file_get_contents($file);
file_put_contents($file, substr($content,3), true); // 처음 세 바이트를 삭제합니다
}
/** 파일 형식 확인
* @param String $file 파일 경로
* @return boolean
*/
private function check_ext($file){
$file_ext = strtolower(array_pop(explode('.',basename($file))));
if(in_array($file_ext, $this->filetype)){
return true;
}else{
return false;
}
}
}
?>
Demo unset utf8 bom
<?php
require('FindFile.class.php');
require('UnsetBom.class.php');
$folder = dirname(__FILE__);
$obj = new UnsetBom(array('php','css','js')); // 파일 형식
$obj->process($folder);
print_r($obj->files);
?>
반응형
'개발 꿀팁 > PHP' 카테고리의 다른 글
php 빈 디렉터리 및 빈 하위 디렉터리 삭제 (0) | 2022.08.17 |
---|---|
php 페이지의 지정된 내용 클래스 (0) | 2022.08.17 |
php 필터 HTML 태그 속성 클래스 (0) | 2022.08.17 |
php 파일 다운로드 클래스 중단점 지원 (0) | 2022.08.17 |
php redis 잠금을 사용하여 동시 액세스 제한 (0) | 2022.08.17 |