~~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_;
}