홈으로 홈으로 | 무료회원가입 | 아이디/비번찾기 | 즐겨찾기
추천음악방송메인홈1대1상담음악방송청취
아리랑가요(무료음악채널)
뽕짝아가씨(무료음악채널)
okTrot(무료음악채널)
전통가요(무료음악채널)
미스트롯(무료음악채널)

온라이브스토어(앱다운로드)

환상의뽕짝파티 무료음악
명작트로트메들리 무료음악
트로트메들리관광 무료음악
동영상노래방
가사검색

POP Player
신나는 고스톱
컴퓨터 오목
작은 음악다방
자동러시 웹플레이어신청

보안∵서버∵쿠키
윈도우∵프레임
이미지∵배경
시간∵달력∵계산
상태바∵타이틀바
음악∵영상
폼∵전송∵테이블
키보드∵마우스
효과∵링크∵메뉴
Script∵php
기타
PHP 강좌
윈도우관련팁
웹관련팁
홈페이지제작팁
기본강좌
레지스트리
윈도우서버
리눅스서버
Android
PHP file 처리 함수
5년 전
php file 처리 함수에 대해서 알아보겠습니다.



file 처리에서 사용하는 함수들은 fopen(), fread(), fwrite(), fputs(), fgetc(), fgets(), filesize(), filetype() feof(), fclose() 등이 있는데 우선 fopen(), feof(), fgetc(), fgets() 함수들에 대해서 알아보겠습니다. 기타 함수들은 간략설명을 참조하기 바라며, 기타 함수들도 실전에서 자주 사용되니 구글링 또는 네이버 검색등으로 학습을 바랍니다. 추후 시간이 된다면 기타 함수들에 대해서도 예제와 설명을 포스팅 하겠습니다.



fopen() 함수는 파일의 입력/출력을 관리할 수 있는 함수 입니다.



우선 관련예제부터 알아보겠습니다.

<html>
<body>
<?php
     $file = fopen("userip.txt","a");
     fwrite($file,"$REMOTE_ADDR \n");
     fclose($file);
?>
</body>
</html>

// 위 구문은 한마디로 요약하면 "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를 반환합니다.  
예를 들어서

예제 1

<?
$fp = fopen("test.txt","r");
while(!feof($fp)){
$data .= fgetc($fp);
}
fclose($fp);
echo "파일의 내용 : ".$data;
echo "<br>";
?>



예제 2

<?
$fp = fopen("test.txt","r");
while(!feof($fp)){
$data .= fgets($fp,20);
}

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)를 지정하지 않으면 문자열 전부에 파일을 쓰게 됩니다.



fputs()

fwrite() 함수와 동일한 기능을 합니다. 단, 차이점은



size_t fwrite( const void *buffer, size_t size, size_t count, FILE *stream );
int fputs( const char *string, FILE *stream );

위에서 알 수 있듯이 fputs가 받아 들이는 타입은 char *입니다.
fwrite가 받아 들이는 타입은 void *로 모든 유형의 타입이 가능하다는 것이죠.

fputs는 char *를 받아 들이기 때문에 char *의 특성을 따라갑니다.
즉, NULL을 만나기 전까지의 데이타를 파일에 쓸 뿐입니다.

fwrite는 틀립니다.
해당 주소값을 준 연후에 넘겨주는 인자의 크기와.. 그 크기만큼의 데이타 중에서
주소값부터 얼마만큼 가져올 것인지가 넘어가게 됩니다.

예를 들어..
int data[10] = {....};
fwrite(data, sizeof(int), 10, fp);
이렇게 하면 data 배열 전체가 한번에 파일에 쓰여지게 됩니다.

즉, 만들어내는 버퍼 내부에 파일 끝을 의미하는 코드가 들어 있다손 치더라도..
사이즈 자체가 그걸 포함하도록 되어 있다면 파일에 당연히 쓰여지게 됩니다.



filesize()

파일의 크기를 byte 단위로 반환하는 함수 입니다.



filetype()

파일의 타입을 반환하는 함수 입니다.



is_dir()

지정된 파일의 타입이 diretory 이면 true를 반환하는 함수 입니다.



is_file()

지정된 파일의 타입이 file 이면 true를 반환하는 함수 입니다.



is_readable()

지정된 파일에서 읽기가 가능하면 true를 반환하는 함수 입니다.



is_writable()

지정된 파일에서 쓰기가 가능하면 true를 반환하는 함수 입니다.



is_executable()

지정된 파일이 실행 가능한 파일이면 true를 반환하는 함수 입니다.



copy()

파일을 복사하는 함수 입니다.



rename()

파일의 이름을 변경하는 함수 입니다.



unlink()

파일을 삭제하는 함수 입니다.



chdir()

directory를 바꾸는 함수 입니다.



mkdir()

directory를 생성하는 함수 입니다.



rmdir()

directory를 삭제하는 함수 입니다.



opendir()

directory를 여는 함수이며, 유효한 디렉토리가 아닐경우 false를 반환합니다.



readdir()

directory로 부터 항목(디렉토리,파일)을 읽어 들이는 함수 입니다.



chmod()

퍼미션을 변경해주는 함수 입니다. 즉, 파일의 읽기, 쓰기 등을 변경할 수 있습니다.

단, 원격 파일은 변경 불가이며, 서버에 있는 파일만 변경이 가능합니다.



move_uploaded_file()

업로드 된 파일을 다른 곳으로 이용할 때 사용하는 함수 입니다.



getImageSize()

gif, jpg, png 의 이미지 파일의 크기를 구하는 함수 입니다.



flock()

파일의 동시접속의 피해를 막기 위해 먼저 파일에 접근한 사용자에게 우선권을 주는 함수 입니다.



일단 간단하게 fopen(), feof(), fgets(), fgetc() 함수에 대해서 알아보았고 기타 함수에 대해서 간략한 설명을 적었습니다.



그리고 좀 더 자세히 알기를 원하는 분들은



http://php.net/manual/kr/function.opendir.php 에서 opendir의 부분에 궁금한 함수명을 적어주면 자세한 설명이 나오니 참조 바랍니다.
추천추천 : 307 추천 목록
번호 제목
3,016
 우클릭 완벽차단 스크립트
3,015
 iframe 높이 100% 맞추기
3,014
 curl 함수를 이용한 HTTP REFERER 변경
3,013
 윈도우10 시스템 파일 및 Dism 검사
3,012
 텍스트 줄바꿈, 글자자르기 CSS
3,011
 jQuery Mobile에서 유용한 코드 10가지.
3,010
 [PHP] dirname()함수와 $_SERVER 관련 상수들
3,009
 [PHP] 파일 크기, 사이즈 불러오는 함수, filesize()
3,008
 [jQuery] jQuery Quick API
3,007
 [ transition ] 링크 hover 색상 변화 속도 조절
3,006
 PHP 5.3.0 에서 사라진 함수들 대체
3,005
 어떤 파일들이 include 나 require 되었는지 확인하는 함수(get_included_files)
3,004
 PHP 날짜 형식 및 계산하기(날짜 더하고 빼기)
3,003
 jQuery Mobile에서 유용한 코드 10가지.
3,002
 값이 배열 안에 존재하는지 확인하는 in_array함수
3,001
 사용자가 웹브라우저에서 뒤로가기를 했을때 감지하는 방법
3,000
 [jQuery]버튼 활성화, 비활성화
2,999
 jQuery show() / hide() / toggle() 사용법
2,998
 jquery 여러가지 이벤트
2,997
 border-radius 속성
2,996
 네이버 오픈API 음성합성 API 사용하는 PHP 샘플코드
2,995
 UTF8 한글 자르기..
2,994
 iconv 에러 발생시 계속 처리하기 옵션
2,993
 [PHP] 현재 페이지의 도메인 , URL 정보 알아내기.
2,992
 [PHP] 막강 기능 배열..
2,991
 [CSS] - Input clear `X ` 버튼 제거 ( IE, Chrome, Firefox )
2,990
 [Mobile] - 모바일웹 Href 태그속성들
2,989
 [JqueryMobile] - 현재화면의 가로세로 사이즈 구하기
2,988
 [JqueryMobile] - 화면의 가로, 세로 사이즈 구하는 방법
2,987
 jquery로 가로 넓이(width), 세로 높이(height) 자동 조절
2,986
 iframe 높이 jquery로 자동조절하기
2,985
 jQuery 오른쪽 영역의 높이를 왼쪽 영역의 높이와 동일하게 하기
2,984
 jquery에서 테이블 짝수, 홀수 번째 TR 배경색 변경하기
2,983
 jquery에서 테이블에 마우스 오버시 해당 행의 배경색상 변경하기
2,982
 jquery 스크립트내 특정값 확인하기 (디버깅)
목록
인기절정뽕짝파티
인기트로트모음
지루박디스코메들리
밤무대애창곡
전자올겐경음악
세월따라노래따라
가슴시린트로트
트로트쌍쌍파티
7080추억속으로
종합성인가요방
못잊을옛날노래
카바레 음악
트롯디스코팡팡
관광 메들리
트롯카페
가요감상실
추억의옛노래
스페셜가요광장
BillBoard Free
추천가요모음
경음악.전자올겐
스페셜음악여행
WOLRD POPs
K-POP\BillBoard
JP\CN
POP TOP BEST
K.R.노래방

최신인기가요특집
추천가요\인기
F뮤직 인기\발라드
F뮤직 애창\트로트
트로트성인가요
인기가요
프리미엄 POP
경음악\기타
프리미엄 최신가요
프리미엄 성인가요
가요축제\트롯1번지
댄스\메들리\리믹스
카페\명상\경음악\기타
뮤직트로트 부산광역시부산진구 가야동 ㅣ 개인정보취급방침
Copyright (C) musictrot All rights reserved.