file 처리에서 사용하는 함수들은 fopen(), fread(), fwrite(), fputs(), fgetc(), fgets(), filesize(), filetype() feof(), fclose() 등이 있는데 우선 fopen(), feof(), fgetc(), fgets() 함수들에 대해서 알아보겠습니다. 기타 함수들은 간략설명을 참조하기 바라며, 기타 함수들도 실전에서 자주 사용되니 구글링 또는 네이버 검색등으로 학습을 바랍니다. 추후 시간이 된다면 기타 함수들에 대해서도 예제와 설명을 포스팅 하겠습니다.
// 위 구문은 한마디로 요약하면 "userip.txt 라는 파일에 방문자의 IP 들을 저장하는 소스" 입니다. 기본적으로 데이터베이스에 방문자 아이피를 저장하지만 위 구문처럼 txt 파일에 저장도 가능합니다. 그리고 이전 포스팅에서 했던 date() 함수를 이용하여 IP 및 방문시간도 저장할수 있고 사용자의 아이디 등등을 txt 파일에 저장할 수 있습니다.
// 구문을 하나씩 살펴보면 우선 $file 변수에 userip.txt 파일을 fopen 합니다. 그런데 "a" 라는 이상한 내용이 있는데 이것은 add의 줄임말로 즉, 구문을 추가한다는 의미입니다. 자세한 내용은 아래 설명을 참조하기 바랍니다. 그리고 어떤 구문을 추가할 것인지에 대해서 fwrite 함수를 사용하여 내용을 기록하게 합니다. $REMOTE_ADDR 은 방문자의 IP를 나타내는 PHP 변수입니다. 그리고 \n은 html의 <br> 과 같은 의미로 한칸 띄우라는 의미입니다.
r : 읽기 전용 , 파일의 처음부터 읽음
r+ : 읽기와 쓰기 모두 가능, 파일의 처음부터 읽음
w : 파일이 있는 경우 쓰기 전용으로 파일 읽음, 해당 파일의 모든 내용을 삭제하며, 파일이 없으면 파일을 생성함
w+ : 읽기 전용으로만 파일을 오픈함. 파일이 있을 경우 모든 내용을 삭제하며, 파일이 없으면 파일을 생성함
a : 읽기 전용으로만 파일을 오픈하며, 파일이 없으면 파일을 생성함, 그리고 파일이 있으면 파일의 끝에서 부터 읽고 내용은 삭제하지 않음
a+ : 읽기와 쓰기로 파일을 오픈하며, 파일이 있으면 파일 끝에서 부터 읽고 내용은 삭제하지 않음
x : 쓰기 전용으로 새 파일을 생성함, 만약 파일이 존재할 경우 false와 오류를 반환함
x+ : 읽기와 쓰기 파일을 생성함, 만약 파일이 존재할 경우 false와 오류를 반환함
feof() 파일포인터가 파일의 마지막인지 알 수 있습니다.
파일을 열게 되면 파일 포인터는 파일의 가장 처음에 위치합니다.
그리고 파일의 내용을 읽으면 가장 최근에 읽은 데이터의 위치에 포인터가 위치하게 됩니다.
이 때 feof() 함수를 사용하면 파일의 끝이면 true 아니면 false를 반환합니다.
예를 들어서
fclose($fp);
echo "파일의 내용 : ".$data;
echo "<br>";
?>
// 코드에서 보듯이 feof() 함수는 파일의 끝인지를 검사하는 함수인데 파일의 끝이 아니기 때문에 그 뒤의 명령을 수행하게 됩니다. 그리고 코드 중간에 보면 fgetc(), fgets() 함수 나오는데 fgetc() 함수는 문자 하나를 읽어오는 함수이며, fgets() 는 한줄씩 읽어오는 함수입니다.
test.txt 파일을 만들어 보고 직접 테스트 하면 어떤 의미인지 이해가 될것입니다.
예를 들어 test.txt 의 내용이
"Park's Blog!!" 라고 할 경우
fgets() 함수는 한줄씩 읽어오는 함수 입니다.
<?php
$file = fopen("test.txt", "r") or exit("Unable to open file!");
while(!feof($file)) {
echo fgets($file). "<br>";
}
fclose($file);
?>
// 출력되는 출력문은
Park's Blog!!
입니다.
fgetc() 함수는 문자 하나를 읽어오는 함수 입니다.
<?php
$file = fopen("test.txt", "r") or exit("Unable to open file!");
while(!feof($file)) {
echo fgets($file). "<br>";
}
fclose($file);
?>
// 출력되는 출력문은
P
a
r
k
'
s
B
l
o
g
!
!
입니다.(문자를 하나하나 읽어서 나오게 됩니다)
fclose()
지정된 파일이나 url을 닫는 함수 입니다.
fread()
파일의 실제 내용을 지정한 크기만큼 읽어 들이는 함수 입니다.
fwrite()
파일에 문자열을 지정한 길이만큼(length byte) 만큼 쓰는 함수 입니다. 만약 길이(length)를 지정하지 않으면 문자열 전부에 파일을 쓰게 됩니다.