누군가가 PHP에서 자주 쓰이는 함수를 정리한 것을 다시 정리했다.
PHP를 처음 배우는 사람들에게 요긴하게 쓰일 수 있을 것이다 ㅋㅋㅋ
##############################################
날짜 및 시간관련함수 정리
함수명 : 기능 설명 & 사용 예
##############################################
checkdate : 주어진 날짜 및 시간이 타당한지를 검사한다.
date : 주어진 옵션에 따른 포맷으로 시간, 날짜를 출력한다.
strftime : 해당 locale을 기준으로 주어진 옵션에 따른 포맷으로 시간, 날짜를 출력한다. date() 함수와 동일
mktime : 특정 날짜 및 시간에 해당하는 유닉스 시간(초 단위)을 얻는다.
time : 현재의 시간에 해당하는 유닉스 시간을 얻는다. 현재시간의 timestamp값을 출력한다.
getdate : 날짜 및 시간 정보를 연관 배열의 형태로 얻는다.
사용 예)
$res = checkdate(2, 29, 2000);
// (초,분,시간,월,일,년도)
$res = mktime(23, 15, 23, 1, 21, 1999);
$str = date('년도출력 - Y 또는 y', $res);
##############################################
date() 함수의 출력 포맷 옵션
출력형식 : 기능 설명 & 사용 예
#############################################
Y : 연도를 네 자리수로 출력한다. : 1999
y : 연도를 두 자리수로 출력한다. : 99
M : 월을 세 자리 영문자로 출력한다. : jan
m : 월을 두 자리수로 출력한다. : 01-12
F : 월을 완전한 영문자로 출력한다. : january
d : 일자를 두 자리수로 출력한다. : 01-31
j : 일자를 출력하는데 10일 이하는 한 자리수로 출력한다. : 1-9,10-31
l : 완전한 영문자로 요일을 출력한다. : friday
w : 요일을 한자리 숫자로 출력한다. : 일(0), 월(1), 화(2), 수(3), 목(4), 금(5), 토(6)
D : 세 자리수 영문자로 요일을 출력한다. : Fri
H : 시간을 24시간제로 출력한다. : 23
h : 시간을 12시간제(오전,오후)로 출력한다. : 11
a : am 이나 pm 으로출력한다. :
A : AM 이나 PM 으로 출력한다. :
i : 분을 출력한다. :
s : 초를 출력한다. :
z : 그해의 몇 번째 일수인지를 출력한다. 이 값은 0부터 시작하므로 :
윤년이 아닌 경우의 12월 31일은 264(wmr,365일째)로 출력한다. :
##############################################
strtime() 함수의 출력 포맷 옵션
포맷옵션 : 기능 설명 & 사용 예
##############################################
%Y : 연도를 네 자리수로 출력한다.
%y : 연도를 두 자리수로 출력한다.
%B : 현재의 locale에 따른 월명을 완전한 이름으로 출력한다.
%b : 현재의 locale에 따른 월명을 축약하여 출력한다.
%d : 일자를 두 자리수로 출력한다.
%a : 현재의 locale에 따른 요일명을 축약하여 출력한다.
%A : 현재의 locale에 따른 요일명을 완전한 문자로 출력한다.
%w : 요일명을 한자리 수자로 출력한다.
%H : 시간을 24시간제로 출력한다.
%l : 시간을 12시간제(오전,오후)로 출력한다.
%M : 분을 출력한다.
%S : 초를 출력한다.
%Z : 현재의 타임존(timezone)을 출력한다.
%x : 현재의 locale에 따는 날짜(월/일/년)를 출력한다.
%X : 현재의 locale에 따른 시간(시/분/초)을 출력한다.
%U : 1.올해 몇 번째 주가 지났는지를 출력한다.
2.첫 주의 첫 날로 첫 번째 일요일을 기준 시간으로 한다.
%W : 1.얼헤 몇 번때 주가 지났는지를 출력한다.
2.첫 주의 첫 날로 첫 번째 일요일을 기준 시간으로 한다.
##############################################
grtdate() 함수의 참조키
참조키 : 내용 설명 & 사용 예
##############################################
"second" : 시간(초)
"minutes" : 시간(분)
"hours" : 시간(시)
"mday" : 일자
"wday" : 요일 (숫자 형태로 출력)
"mon" : 월
"year" : 년도
"yday" : 1년 365일 중 며칠째인가를 출력
"weekday" : 요일 (영문자 전체로 출력)
"month" : 월(영문자 전체로 출력)
예) 날짜관련 함수 사용 예
<?
$timeinfo = getdate(time());
while(list($key,$val) = each($timeinfo)) {
echo ("$key - $val");
}
echo $timeinfo["year"];
?>
##############################################
문자열 처리함수
함수명 : 기능 설명 & 사용 예
##############################################
addslashes : 작은 따옴표(')와 큰 따옴표(),역슬래시(\)와 같은 특정 문자 알에 역슬래시(\)문자를 붙인다.
stripslashes : addslashes() 함수를 통해 역슬래시 처리가된 문자를 원 상태로 되돌린다.
htmlspecialchars : HTML 코드를 문자열 소스 그대로 출력한다.
n12br : 문자열 개행문자를 <BR> 태그로 치환한다.
echo : 인자로 전해준 문자열을 출력한다.
sprintf : 문자열을 지정해준 포맷으로 바꾸어 반환한다.
printf() : 지정할 수 있는 포맷에 따라 문자열을 출력하며 사용 가능한 포맷은 sprintf()의 경우와 같다.
explode : 문자열을 구분자로 나누어 배열에 저장한다.
implode : 배열의 각 원소를 구분자로 연결한 전체 문자열을 반환한다.
join : implode함수와 동일한 기능을 수행한다.
split : 문자열을 정규 표현식에 의한 구분자로 나누어 배열에 저장한다.
strcmp : 두 개의 문자열을 비교한다.
substr : 문자열의 일부를 추출한다.
strchr : 검색 대상 문자열에서 찾고자 하는 문자열이 처음으로 나타나는 위치 이후의 문자열을 반환한다.
atrrchr : 검색 대상 문자열에서 찾고자 하는 문자열이 마지막으로 나타나는 위치 이후의 문자열을 반환한다.
strpos : 검색 대상 문자열에서 찾고자 하는 문자열이 처음으로 나타나는 위치를 숫자로 반환한다.
strrpos : 검색 대상 문자열에서 찾고자 하는 문자가 마지막으로 나타나는 위치를 숫자로 반환한다.
strlen : 문자열의 길이(byte)를 반환한다. 한글은 2byte로 계산한다.
strtolower : 알파벳으로 된 문자열을 소문자로 변환한다.
stroupper : 알파벳으로 된 문자열을 소문자로 변환한다.
ucfirst : 알파벳 문자열의 첫글자를 대문자로 변환한다.
ucwords : 알파벳 문자열내 모든 단어의 첫글자를 대문자로 변환한다.
strrev : 문자열의 순서를 정반대로 바꾼다. 문자열의 순서를 역전.
strtr : 대상 문자열의 각 문자를 검색하여 지정한 문자로 가각 치환한다.
strtr ( string str, string from, string to );
str_replace : 대상 문자열 haystack에서 needle 문자열을 str 문자열로 바꾸어 전체 문자열을 반환한다.
str_replace ( string needle, string str, string haystack );
[참고] strtr 함수가 대상 문자열에 대해 호출시 지정한 두 문자열의 문자를 1:1로 치환하는데 반해 str_replace() 함수는 이름 그대로 대상 문자열에서 지정한 문자열을 찾아 다른 문자열로 바꿀때 호출한다.
chop : 문자열의 뒷 부분에 있는 공백 문자를 제거한 문자열을 반환한다.
trim : 문자열 앞과 뒤에 있는 공백 문자를 제거한 문자열을 반환한다.
quotemeta : 메타 문자 앞에 역슬래시(\) 문자를 덧붙인다.
org : 인자로 전달된 문자열의 첫 번째 문자에 대한 ASCII 코드값을 반환한다.
chr : 인자로 전달된 ASCII 코드값에 해당하는 문자를 반환한다.
parse_str : URL을 통해 전달되는 문자열을 파싱하여 변수를 설정한다.
GET방식과 같이 URL을 통해 전달되는 puery string을 파싱하여 변수와 값을 설정한다.
(파싱 : 문법을 가지는 문자열을 문법의 하부 요소들로 나누어 요소들로 이루어진 트리를 만드는 과정.)
(토크나이징 : 문자열을 특별한 문자를 기준으로 삼아 그 문자로 구분된 각 구절로 나누는 작업.)
nl2br() 함수의 사용 예
<?
echo("[n12br() 함수 호출전]");
echo("$comment<p>");
$res = n12br($comment);
echo("[n12br() 함수 호출후]");
echo("$res");
?>
sprintf() 함수의 사용 예
<?
$a = 18.2;
$b - 7.4;
$sum = $a + $b; //$sum = 25.6
$ext = $a - $b; //$ext = 10.8
$res = sprintf("%d", $sum);
echo("$res"); // =25
$res = sprintf("%f", $sum);
echo("$res"); // =25.600000
$res = sprintf("%04d", $sum);
echo("$res"); // =0025
$res = sprintf("%04.2f", $sum);
echo("$res"); // =0025.60000
$res = sprintf("%03.2f - %0.2f", $sum,$ext);
echo("$res"); // =025.60 - 10.80
$res = sprintf("%d-%C", 97,97); // =97 - a
echo("$res");
?>
printf() 함수의 사용 예
<?
1-603+0 $a = 18.2:
$b = 7.4;
$sum = $a + $b;
printf("%02.2f 와 %02.2f의 합은 정수값으로 %'x4d입니다.!", $a,$b,$sum);
/*18.20와 07.40의 합은 정수값으로 xx25입니다.!*/
?>
explode() 함수의 사용 예
<?
$string = "one two three four five";
$arr = explode(" ",$string);
while(list($key,$val) = each($arr)) {
echo("\$arr[$key] : $val");
}
?>
결과
$srr[0] : one
$srr[1] : two
$srr[2] : three
$srr[3] : four
$srr[4] : five
implode() = join() 둘이 같은 기능을 한다.
<?
$arr = array("one","two","three");
$res = implode("/",$arr);
echo("$res"); //결과 one/two/three
?>
split() 함수의 사용 예
<?
$str = "이완철:김여아:길현수:박현영";
$arr = split(":", $str,3);
$while(list($key,$val) = each($arr)) {
echo("\$arr[$key] : $val");
}
echo("<P>");
$str = "이완철92김여아91길현수87박현영97";
$arr = split("[0-9]{2}", $str);
while(list($key,$val) = each($arr)) {
echo("\$arr[$key] : $val");
}
?>
결과
$arr[0] = 이완철
$srr[1] = 김영아
$srr[2] = 길현수:박현영
$srr[0] = 이완철
$srr[1] = 김영아
$srr[2] = 길현수
$srr[3] = 박현영
$srr[4] =
substr() 함수의 사용 예
<?
$res=substr("abcdefg",1);
echo("$res"); //bcdefg
$res=substr("abcdefg",1,3);
echo("$res"); //bcd
$res=substr("abcdefg",-3);
echo("$res"); //efg
$res=substr("abcdefg",-3,2);
echo("$res"); //ef
?>
strchr() = strstr() 동일한 기능을하는 함수
<?
$str1 = "abcdefghijklmn";
$res = strchr($str,"j");
echo("res : $res"); // "jklmn"을 반환한다.
$res = strchr($str1,"jm");
echo("res : $res"); //false를 반환한다.
?>
strrchr() 함수의 사용 예
<?
printf("%d -> %c, 10, 10); //숫자 10은 개행문자 (\n)
$text = "line 1\nline 2\nline 3";
$str = strrchr($text,10); //"\nline 3"을 반환
echo("str :$str");
$last = substr( strrchr( $text, 10),1); //"line 3"을 반환
echo("$last - ");
?>
strpos() 함수의 사용예 : 숫자를 반환
<?
$str = "AaBbCcDdAaBb";
$res = strpos($str,"C");
echo("res : $res"); // 4를 출력한다.
$res = strchr($str,"C");
echo("res : $res"); // CcDdAaBb 를 출력한다.
$res = strpos($str,97);
echo("res : $res"); //97은 ASCI코드로 a를 나타낸다. 결과값은 1.
$res = strpos($str,"C",5);
echo("res : $res"); //5는 5번째열부터 찾는 옵션이다. 결과값은 :false
?>
strlen() 함수의 사용 예
<?
$str = "abcd";
$res = strlen($str);
echo("res : $res"); //결과물은 4가된다.
?>
strrev() 함수의 사용 예
<?
$str = "abcd";
$res = strrev($str);
echo("$res"); //결과물은 dcba 가 된다.
?>
quotemeta() 함수 사용 예
<?
$str = "meta character : . \\ + ? [ ^ ] ( $ )";
$res = quotemeta($str);
echo("$res"); //결과값은: "meta character : \. \\ \+ \? \[ \^ \] \( \$ \)"
?>
org() 함수와 chr() 함수의 사용 예
org(string string)함수는 문자열 string의 첫 번째 문자에 대한 Ascii코드값을 반환한다.
chr(int ascii)함수는 ascii 코드값에 해당하는 문자를 반환한다.
<?
$str = "aspell";
$res = org($str);
echo("$res"); //결과는 97
$res = chr($res);
echo("$res"); //결과는 'a'
?>
##############################################
parse_str() 함수의 사용 예
parse_str(string str) : GET방식과 같이 URL을 통해 전달되는 puery string을 파싱하여 변수와 값을 설정한다.
(파싱 : 문법을 가지는 문자열을 문법의 하부 요소들로 나누어 요소들로 이루어진 트리를 만드는 과정.)
(토크나이징 : 문자열을 특별한 문자를 기준으로 삼아 그 문자로 구분된 각 구절로 나누는 작업.)
<?
$str = "page_num=1&key=php4&keyword=subject";
parse_str($str);
echo("page_num : $pase_num"); //"page_num : 1"
echo("key : $key"); //"key : php4"
echo("keyword : $keyword"); //"keyword : subject"
?>
##############################################
파일 처리 관련 함수
함수명 : 기능 설명 & 사용 예
##############################################
fopen : 지정한 파일을 연다.
fcloss : fopen()으로 연 파일을 닫는다.
fread : 파일에서 특정 byte수만큼을 읽어들여 문자열로 반환한다.
fwrite : 파일에 특정 byte수만큼을 쓴다.
feof : 파일 포인터의 위치가 파일의 끝인지를 검사한다.
fgets : 지정한 파일에서 개행 문자나 EOF를 만나기 전까지 특정 byte수만큼 읽어드린다.
fputs : 파일에서 특정 byte수만큼을 읽어들여 문자열로 반환한다.
fpassthru : 파일 포인터가 가리키는 현재의 위치에서 파일의 끝(EOF)까지를 읽어들여 표준 출력 장치로 출력한다.
readfile : 파일을 읽어 표준 출력 장치에 출력한다.
fgetc : 파일로부터 한 문자를 읽어들인다.
filesize : 파일의 크기를 byte수로 반환한다.
file_exists : 파일이 존재하는지를 검사한다.
is_file : 정상적인 파일인지를 검사한다.
is_dir : 디렉토리인지를 검사한다.
is_link : 심볼릭 링크인지를 검사한다.
is_executable : 실행 가능한 파일인지를 검사한다.
is_readable : 읽기 가능한 파일인지를 검사한다.
is_writeable : 쓰기 가능한 파일인지를 검사한다.
copy : 파일을 복사한다. 복사가 제대로 수행될 경우 true를 반환한다.
rename : 파일의 이름을 바꾼다. 제대로 수행될경우 true를 반환한다.
unlink : 파일을 삭제한다. 제대로 수행될경우 true를 반환한다.
mkdir : 디렉토리를 생성한다.
mkdir(string pathname, int mode) 추가 인자를 통해 퍼미션을 지정할 수 있다.
제대로 수행될경우 true를 반환한다.
rmdir : 지정한 디렉토리를 삭제한다. 이때 이렉토리는 비어 있어야 한다.
basename : 파일에 대한 경로명 중 확장자를 포함한 파일 이름만을 반환한다.
dirname : 파일 대한 경로명 중 디렉토리명만을 반환한다.
file : 파일을 줄 단위로 읽어서 각 줄의 문자열을 배열 원소로 하는 배열로 반환한다. 그 외에는 readfile() 함수와 동일하다.
filesize : 파일의 크기를 byte수로 반환한다.
file_exits : filename으로 전해준 이름이 존재하는지 검사하여 존재하면 true를 반환한다.
is_file : filename으로 전해준 이름이 정상적인 파일일 경우 true를 반환한다.
is_dir : filename으로 전해준 이름이 디렉토리일 경우 true를 반환한다.
is_link : filename으로 전해준 이름이 symbolic link일 경우 true를 반환한다.
is_executable : filename으로 전해준 이름이 실행 가능한 파일일 경우 true를 반환한다.
is_readable : filename으로 전해준 이름이 읽기 가능한 파일일 경우 true를 반환한다.
is_writeable : filename으로 전해준 이름이 쓰기 가능한 파일일 겨우 true를 반환한다.
fopen() 함수의 추가 설명
모드 : 기능 설명 & 사용 예
##############################################
'r' : 파일을 읽기 모드로 연다. 팡리 포인터는 해당 파일의 처음에 위치하게 된다.
'r+' : 파일을 읽기와 쓰기 모드로 연다. 파일 포인터는 해당 파일의 처음에 위치하게 된다.
'w' : 파일을 쓰기 모드로 연다. 해당 파일이 이미 존재하면 덮어 씌우고 없으면 새로 만든다.
파일 포인터는해당 파일의 처음에 위치하게 된다.
'w+' : 파일을 읽기와 쓰기 모드로 연다. 해당 파일이 이미 존재하면 덮어 씌우고 없으면 새로 만든다.
파일 포인터는 해당 파일의 처음에 위치하게 된다.
'a' : 파일을 쓰기 모드로 연다. 해당 파일이 존재하지 않으면 새로 만들며,
파일의 포인터는 해당 파일의 마지막에 위치하게 된다.
'a+' : 파일을 읽기 및 쓰기 모드로 연다. 해당 파일이 존재하지 않으면 새로 만들며 파일의 포인터는
해당 파일의 마지막에 위치하게 된다.
##############################################
'r' 이나 'r+' 모드는 불러들이고자 하는 파일이 이미 존재하고 있어야 하며 그렇지 않을 경우 에러를 발생시킨다.
즉, 파일이 존재하지 않으면 더 이상 코드를 진행시킬 수가 없다.
그러나 'w' 나 'w+'모드는 불러들이고자 하는 파일이 존재하지 않더라도 에러를 발생시키지 않고 대신
새로운 파일을 직접 생성한다. 이때 파일의 포인터는 해당 파일의 처음에 위치 한다.
한편 'a' 나 'a+'모드는 'w'나 'w+'모드와 마찬가지로 파일이 없을 경우 새로운 파일을 생성하나 대신 파일의 포인터는
해당 파일의 가장 마지막에 위치하게 된다.
따라서 'a'나 'a+"모드는 기존의 파일에 새로운 내용을 추가하고자 할 때 쓴다.
fopen() 함수의 사용 예
<?
$fp = fopen("/home/hooni/public_html/php/list.dat","r");
if(!$fp) {
echo("Failed to open the file");
} else {
echo("Succesfully opened the file!");
}
fclose($fp);
?>
위의 (사용 예)의 2행에서 파일 모드를 'r' 이나 "r+"모드로 주었을 경우 /home/hooni/public_html/php 디렉토리에
list.dat라는 파일이 존재하지 않으면 위의 스크립트는 더 이상 실행되지 않는다.
그러나 'w' , 'w+' 나 'a' 'a+' 모드를 주었을 경우에 list.dat파일이 존재하지 않으면 파일을 직접 생성하며 파일의 포인터는
'w' 'w+'의 경우 파일의 처음에, 'a' 'a+'의 경우에는 파일의 마지막에 위치한다.
따라서 보통 읽기 모드로는 'r'을 ,쓰기모드로는 'w'를 추가하여 쓰기 모드로는 'a'라고 생각하면 된다.
fclose() 함수와 fread() 함수의 사용 예
fclose(int fp) : 파일 포인터의 파일을 닫는다.
fread(int fp,int legth) :파일에서 length byte만큼 읽어들여 문자열로 반환한다.
<?
$fp = fopen("/home/hooni/public_html/php/list.dat","r");
//He was in time for the last bus. "r"은 읽기모드입니다.
if(!$fp) {
echo("Failed to open the file");
}
$contents = fread($fp,10); // 결과물: "He was in"
echo("$contents");
fclose($fp);
?>
fwrite() 함수의 사용 예
fwrite() : fwrite(int fp,string string, int[length]); = fputs()
파일의 문자열을 (length 1)byte만큼 쓴다.
length를 지정해주지 않은 경우 지정해 준 string을 모두 파일에 쓴다.
<?
$fp = fopen("/home/hooni/public_html/php/list.dat","a");
if(!$fp) {
echo("Failed to open the file");
}
$str = " It is of no importance";
fwrite($fp,$str);
fclose($fp);
?>
feof() 함수와 fgets() 함수의 사용 예
feof(int fp)
파일 포인터가 파일의 끝 (EOF)이거나 에러가 발생하였을 경우 true를 반환하고,
그렇지 않을 경우에는 false를 반환한다.
fgets(int fp,int length)
파일 포인터가 가리키는 파일에서 length-1 byte만큼 읽어들인다.
그러나 length-1 byte만큼 읽어들이기 전에 개행 문자나 EOF를 마날 경우 읽기를 중단한다.
fgets()함수를 호출하여 파일을 한 줄씩 읽어들인 후 그내용을 그대로 출력하는 예제이다.
<?
$fp = fopen("/home/hooni/public.html/php/list.dat","r");
if(!$fp) {
echo("Failed to open file");
}
while(!feof($fp)) { //"EOF"일때까지 한줄씩 출력한다.
$line = fgets($fp,10000);
echo("$line");
}
fclose($fp);
?>
fpassthru() 함수의 사용 예
fpassthru(int fp);
파일 포인터가 가리키는 현재의 위치에서 파일의끝(EOF)까지를 읽어들여 표준 출력 장치로 출력한다.
이 과정 중 에러가 발생하면 false를 반환한다. 이 함수는 파일 포인터가 가리키는 파일의 현재 위치에서
파일의 끝까지를 읽어들여 표준 출력 장치에 출력한 후 해당 파일을 닫는 기능까지 스스로 한다.
즉, fpassthru($fp)함수를 호출한후에 close($fp)와 같이 파일을 닫는 함수를 호출하면 이미 파일이 닫혀있으므로 에러가 발생한다.
<?
$fp = fopen("/home/hooni/public_html/php/list.dat",r");
if(!$fp) {
echo("Failed to open the file");
}
$line = fgets($fp,10000);
if(!feof($fp)) {
fpassthru($fp);
}
//fclose($fp);
?>
readfile() 함수의 사용 예
readfile(string filename) : 파일을 읽어 표준출력장치로 출력한다.
<?
$bytes = readfile("/home/hooni/public_html/php/list.dat");
echo("total size : $bytes bytes");
?>
결과 :
He was in time for the last bus. He goes tj his office every other day. It is nearly six (o'clock)
total size : 100 bytes
fgetc() 함수의 사용 예
fgetc(int fp);
fgets()함수가 지정한 크기만큼의 문자열을 읽어들이는 것에 비해 fgetc() 함수는 파일 포인터가 가리키는 파일로부터 하나의 문자를 읽어들인다.
<?
$fp = fopen(/home/hooni/public_html/php/list.dat","r");
if(!$fp) {
echo("Failed to open the file");
if(!feof($fp)) {
$chr = fgetc($fp);
if(strcmp($chr,"\n")) {
$chr .= "";
}
}
$line .= $chr;
}
echo("$line");
fclose($fp);
?>
filesize, file_exits, is_file, is_dir, is_link, is_executable, is_readable, is_writeable 함수의 사용 예
filesize(string filename) : 파일의 크기를 byte수로 반환한다.
file_exits(string filename) : filename으로 전해준 이름이 존재하는지 검사하여 존재하면 true를 반환한다.
is_file(string filename) : filename으로 전해준 이름이 정상적인 파일일 경우 true를 반환한다.
is_dir(string filename) : filename으로 전해준 이름이 디렉토리일 경우 true를 반환한다.
is_link(string filename) : filename으로 전해준 이름이 symbolic link일 경우 true를 반환한다.
is_executable(string filename) : filename으로 전해준 이름이 실행 가능한 파일일 경우 true를 반환한다.
is_readable(string filename) : filename으로 전해준 이름이 읽기 가능한 파일일 경우 true를 반환한다.
is_writeable(string filename) : filename으로 전해준 이름이 쓰기 가능한 파일일 겨우 true를 반환한다.
<?
$filename = "/home/hooni/public_html/php/list.dat";
if(!file_exists($filename)) {
echo("${filename} 파일이 존재하지 않습니다." );
exit;
}
if(!is_file($filename)) {
echo("${filename} 은 파일이 아닙니다.");
exit;
}
if(!is_dir($filename)) {
echo("${filename} 은 디렉토리가 아닙니다.");
exit;
}
if(!is_link($filename)) {
echo("${filename} 은 심볼릭 링크가 아닙니다.");
exit;
}
if(!is_readable($filename)) {
echo("${filename} 은 읽을수 없는 파일입니다.");
exit;
}
if(!is_writeable($filename)) {
echo("${filename} 은 쓰기가 불가능한 파일입니다.");
exit;
}
if(!is_executable($filename)) {
echo("${filename} 은 실행불가능한 파일입니다.");
exit;
}
?>
copy() 함수의 사용 예
copy(string source, string dest)
<?
$src = "/home/hooni/public_html/php/list.dat";
if(!copy($src,"/home/hooni/public_html/php/backup.dat")) {
echo("Failed to copy $src file");
exit;
}
?>
rename() 함수의 사용 예
rename(string oldman, string newname)
<?
$src = "/home/hooni/public_html/php/list.dat";
if(!$rename($src, "/home/hooni/public_html/php/rename.dat")) {
echo("Failed to rename $src file");
exit;
}
?>
unlink() 함수의 사용 예
unlink(string filename)
<?
$src= "/home/hooni/public_html/php/list.dat";
if(!file_exists($src)) {
echo("$src file does not exist!");
exit;
}
if(!$unlink($src)) {
echo("Failed to delete $src file");
exit;
}
?>
mkdir() 함수와 rmdir() 함수의 사용 예
mkdir(string pathname, int mode)
디렉토리를 생성할 때 mode 인자를 통해 생성과 함께 퍼미션을 지정할 수 있다.
rmdir(string dirname)
지정한 디렉토리를 삭제한다. 이때 이렉토리는 비어 있어야 한다.
<?
$filename = "/home/hooni/public_html/php/temp";
if(!mkdir($dirname,0755)) {
echo("Failed to create $dirname directory");
exit;
}
if(!$rmdir($filename)) {
echo("Failed to remove $dirname directory");
exit;
}
?>
basename() 함수와 dirname() 함수의 사용 예
basename(string path)
패스까지 포함한 파일의 전체 경로명을 인자로 받아 파일명만을 반환한다.
dirname(string path)
패스까지 포함한 파일의 전체 경로명을 인자로 받아 디렉토리명만을 반환한다.
<?
$path = "/home/ftp/readme.txt";
$base = basename($path);
echo("$base");
$dir = dirname($path);
echo($dir);
?>
file() 함수의 사용 예
file(string filename) : 파일을 줄 단위로 읽어서 각 줄의 문자열을 배열 원소로 하는 배열로 반환한다.
그 외에는 readfile() 함수와 동일하다.
<?
$filename = "/home/hooni/public_html/php/list.dat";
$line = file($filename);
while(list($key,$val) = each($line)) {
echo("$val"); //list.dat의 모든내용을 출력한다.
}
?>
#############################################
디렉토리 관련 함수
함수명 : 기능 설명 & 사용 예
##############################################
opendir : 지정한 디렉토리에 대한 핸들(handle)을 얻는다.
closedir : opendir()함수로 연 디렉토리에 대한 핸들을 닫는다.
readdir : 디렉토리의 파일 및 하부 디렉토리 이름을 읽어들여 목록의 형태로 반환한다.
rewinddir : 디렉토리 핸들을 처음 위치로 되감는다.
chdir : 디렉토리를 바꾼다.
dir : 디렉토리 클래스 객체를 생성한다.
#############################################
opendir(), closedir(), readdir() 함수들의 추가 설명과 사용 예
opendir(string path)
지정한 디렉토리를 열고 그 디렉토리에 대한 핸들을 얻는다. opendir() 함수의 결과로 얻어지는 핸들은 closedir()과 readdir() 함수 호출시에 인자로 사용된다.
closedir(int dir_handle)
opendir() 함수 호출로 연 디렉토리에 대한 핸들을 닫는다.
readdir(int dir_handle)
readdir() 함수는 이렉토리에 있는 모든 디렉토리 및 파일들의 이름을 읽어 배열의 형태로 반환한다.
"/home/hooni" 디렉토리에 있는 하부 디렉토리 및 파일들의 목록을 출력하는 예제
<?
$dirhandle = opendir("/home/hooni");
$filename = readdir($dirhandle);
echo("filename : $filename"); //"filename : ."
$filename = readdir($dirhandle);
echo("filename : $filename"); //"filename : .."
$filename = readdir($dirhandle);
echo("filename : $filename");
//"filename : KBackup-1_2_11-1_i386.rpm"
$filename = readdir($dirhandle);
echo("filename : $filename");
//"filename : KBackup-1_2_11.tar.gz"
closedir($dirhandle);
?>
<예제 설명>
2행에서 /home/hooni 디렉토리에 대한 핸들을 얻고 이 핸들로 4행의 readdir() 함수를 호출하였다.
그러면 4행의 실행 결과는 현재 핸들이 가리키는 이렉토리 안의 모든 파일들을 배열처럼 목록으로 만들고
그 목록 중 가장 위에 있는 파일 이름 하나를 변수 $filename에 확당하게 된다.
7행에서 다시 readdir()함수를 한번 더 호출하게 되면 변수 $filename에는 목록에서 그 다음 위치에 있는 파일 이름이 저장되며
이와 같이 목록의 끝에 도달할 때까지 함수를 반복하여 초출하게 되면 해당 디렉토리 내 모든 파일과 디렉토리를 출력할 수 있게 된다.
따라서 while문을 이용하여 더 이상 목록에 파일 이름이 없을 때까지 readdir()함수를 반복 호출함으로써
디렉토리 내 모든 파일의 이름을 출력할 수 있다.
<?
$dirhandle = opendir("/home/hooni");
while($filename = readdir($dirhandle)) {
echo("filename : $filename");
}
closedir($dirhandle);
?>
rewinddir() 함수의 사용 예
rewinddir(int dir_handle) : 디렉토리 핸들의 위치를 처음 위치로 되돌린다.
앞서 readdir()함수를 호출할때마다 파일 목록에서 함수의 호출 결과로 반한되는 파일의 이름,
즉 목록에서 가장 위에 존재하는 파일의 이름이 바뀌는 것을 보았다. 이rewinddir()함수는 바로
그 목록의 순서를 처음의 상태로 되돌리는 역활을 하는 함수이다.
<?
$dirhandle = opendir("/home/hooni");
while($filename = readdir($dirhandle)) {
echo("filename : $filename"); //파일의 목록이 출력된다.
}
$filename - readdir($dirhandle) ;
//핸들이 마지막까지 다 돌아갔기 때문에 아무런 출력값도 없다.
echo("filename : $filename");
rewinddir($dirhandle); //핸들을 다시 처음으로 되돌리다.
while($filename = readdir($dirhandle)) { //다시 파일목록이 출력된다.
echo("filename : $filename");
}
closedir($dirhandle); //핸들을 닫는다.
?>
chdir(), dir(), read(), rewind(), close() 함수의 사용 예
chdir(string directory);
디렉토리를 지정한 디렉토리로 바꾼다. 제대로 실행되지 않을 경우 false를 반환한다.
dir(string directory);
앞서의 디렉토리 관련 함수를 그 메쏘드(methode)로 갖는 디렉토리 클래스이다.
이 클래스를 통해 디렉토리 객체를 생성하면 해당 객체는 자동적으로 두 개의 속성이 얻어지는데 하나는 디렉토리 핸들(handle)이고, 다른 하나는 디렉토리 경로명(path)이다 dir()클래스의 객체를 생성하면 객체가 갖는 이 두개의 속성을 이용해 앞에서 나온readdir(),rewinddir(),closedir() 함수와 동일한 기능을 수행하는 세 개의 메쏘드
read(), rewind(), close()를 하용할 수 있게 된다.
<?
$mydir = dir("/home/hooni");
echo("Current directory : $mydir->path");
//Current directory : /homr/hooni
while($filename = $mydir->read()) {
echo("$filename\n");
}
$mydir->rewind();
echo("Current directory : $mydir->path");
while ($filename = $mydir->read()) {
echoL("$filename\n");
}
$mydir->close();
?>
<예제 설명>
예제중 3행은 dir()클래스로 $mydir이라는 객체를 생성한다. 그러면 $mydir이라는 객체는 두 개의 속성 handle과 path를 가지게 되며 각각 $mydir->handle과 $mydir->path를 통해 접근할 수 있다.
결국 위 예제에서 $mydir->handle은/home/hooni 디렉토리에 대한 핸들이 되고 5행에서 $mydir->path는 그 핸들이 가리키는 디렉토리에 대한 경로명(/home/hooni)을 값으로 갖게 된다.
클래스를 이용한 객체를 생성하게 되면 6행의 $mydir->read(),10행의 $mydir->rewinddir(),17행의 $mydil->close()처럼 $mydir 객체가가진 세 개의 메쏘드를 디렉토리 함수대신 이용할 수 있게 된다.