~~Title:PHP 파일 디렉토리~~ ======PHP 파일 디렉토리====== {{page>language:php:php_문서_목차&noheader&nofooter&noeditbtn&firstseconly}} ====== 파일 제어 ====== * 파일을 제어하는 함수들에 대한 것들. * C 언어의 파일 제어 함수와 같다. ===== 파일 열기 ===== $fp = fopen( “path”, “AccessType” ) 파일 패스에는 ‘/’ 를 사용하는게 호환성이 확보된다. ‘\’는 윈도우즈에서만 된다고 하네. $_SERVER[ ‘DOCUMENT_ROOT’ ] 프로그램이 실행되고 있는 경로. 책에서는 간단히 쓰기 위해서 변수에 값을 넣어두고 사용했다. $DOCUMENT_ROOT = $_SERVER[ ‘DOCUMENT_ROOT’ ] ===== FTP, HTTP 파일 열기 ===== allow_url_fopen 옵션이 설정되어 있다면 원격 파일도 읽고 쓸 수 있다. | fopen() | 열기, 원격지 파일도 열기 가능. | | fclose() | 닫기 | | fgets() | 한줄 읽기 | | fgetss() | php html tag 제거. 태그를 남기려면 allowable_tags 살리기 | | fwrite( fp, write ) | 쓰기 | | fputs( fp, string ) | 한줄 쓰기 | | file_put_contents \\ ( filename, data, flag, RC ) | 뭐드라?? | | flock( $fp, LOCK_EX ) | 파일 잠금, 잠금해제 | | flock( $fp, LOCK_UN ) | ::: | | fgetcsv \\ ( fp, length, delimeter, enclosure ) | 읽어서 배열로 저장 | | readfile() | 한번에 읽기 | | fpassthru() | fopen()으로 연 파일포인터의 위치부터 끝까지 읽기 | | file() | 읽어서 배열에 저장 | | file_get_contents() | 읽어서 모두 문자열로 저장 | | fread() | 임의로 원하는 만큼 읽어들이기 | | file_exists() | 파일이 있는지 확인하기 | | filesize() | 파일의 크기를 읽어오기 | | unlink() | 파일 삭제 | | rewind() | 파일 포인터 위치 변경. 처음으로 이동 / 다른 위치로 이동 / 현재 위치값 리턴 | | fseek() | ::: | | ftell() | ::: | ====== 디렉토리 ====== * [[https://www.php.net/manual/en/function.readdir.php|readdir()]] * [[https://www.php.net/manual/en/function.scandir.php|scandir()]] ====== 코드 조각 ====== ===== 파일,폴더 읽기 ===== // $start_dir_ (폴더명, (예, '.'))에서 폴더와 html 파일을 읽어서 배열로 저장한다. // 저장 형식 (리턴할 배열의 저장 형식) // > array( array('dir', '폴더 이름'), array('file', '파일 이름') ) // > 'dir' 디렉토리라는 마크. // > 'file' 파일이라는 마킹. (*.{html,htm,php}) 파일만 저장. function get_dir_from($start_dir_) { $ar_for_sav_ = []; $_idx = 0; if ($handle = opendir($start_dir_)) { while (false !== ($entry = readdir($handle))) { if (is_dir($entry) && ($entry != '.' && $entry != '..')) { $ar_for_sav_[$_idx] = ['dir', $entry]; //print($ar_for_sav_[$_idx] . '
'); $_idx++; } elseif (is_file($entry)) { // 파일 확장자 얻기 $path_info = pathinfo($entry); $ar_ext = ['html', 'htm', 'php']; // 확장자가 $ar_ext 에 포함 되어 있다면 if (in_array($path_info['extension'], $ar_ext)) { $ar_for_sav_[$_idx] = ['file', $entry]; //print_r($ar_for_sav_[$_idx]); $_idx++; } } } closedir($handle); } return $ar_for_sav_; }