Contents

Develop
2013.04.23 15:19

[php] 자주 쓰는 PHP 함수와 예제

조회 수 9913 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

누군가가 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 객체가가진 세 개의 메쏘드를 디렉토리 함수대신 이용할 수 있게 된다.




?