Front-End/PHP

[PHP] php 파일 함수 알아보기

챌링킴 2021. 7. 17. 23:34
반응형

1) php 파일 다루기

1. readfile( )
- 파일에서 데이터를 한 줄로 읽어오는 함수이다.
- echo 함수를 사용할 필요가 없으며, 텍스트를 표시할 위치에 사용하면 읽어온 내용을 그대로 출력한다.

<?php readfile("./data.txt"); ?>

▼실행 결과▼

 


2. file( )
- 매개변수에 지정된 파일을 읽어 한줄씩 나눠 배열에 저장한다.

🎁 파일처리할 때 실패할 가능성이 있는 경우 처리방법 🎁

- @을 붙이면 실행시 에러가 나더라도 스크립트를 중단하지 않으며, 화면에 에러를 발생시키지 않는다.

// $변수 = @file(파일경로) or 실패했을 경우 처리할 문장;

$lines = @file("data.txt") or $result = "파일을 가져올 수 없습니다";

 

<?php
    $result = "";
    $lines = @file("data.txt") or $result = "파일을 가져올 수 없습니다";
/*
    $lines[0] = "안녕하세요. php 파일 예제입니다.";
    $lines[1] = "휴가도 끝나고 무슨 낙으로 살까요?";  
*/
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>파일 - 2</title>
</head>
<body>
    <h2>파일 - 2</h2>
    <?php
        if($lines != null){
            for($i=0; $i<count($lines); $i++){
                $result .= $lines[$i]."<br>";
            }
        }
    ?>
    <p><?=$result?></p>
</body>
</html>

▼실행 결과▼

 


2) php 파일 실행 예제 - 1(테이블 만들기)

- 아래 파일 "tel.txt"를 읽어 아래와 같이 출력하는 문서를 작성해보기

김사과      010-1111-1111      서울 서초구
반하나      010-2222-2222      서울 강남구
오렌지      010-3333-3333      서울 동작구
이메론      010-4444-4444      서울 금천구

 

<?php
    $result = "";
    $lines = @file("tel.txt") or $result = "파일을 읽을 수 없습니다";
    /*
        $lines[0] = "김사과,010-1111-1111,서울 서초구"
        $lines[1] = "반하나,010-2222-2222,서울 강남구"
        $lines[2] = "오렌지,010-3333-3333,서울 동작구"
        $lines[3] = "이메론,010-4444-4444,서울 금천구"
    */
    if($lines != null){
        for($i=0; $i<count($lines); $i++){
            $result .= "<tr>";
            $arr = explode(",", $lines[$i]); // ,(콤마)를 기준으로 잘라서 리턴해준다.
            // $arr[0] = "김사과", $arr[1] = "010-1111-1111", $arr[2] = "서울 서초구"
            for($j=0; $j<count($arr); $j++){
                $result .= "<td>{$arr[$j]}</td>";
            }
            $result .="</tr>";
        }
    }
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>파일 - 3</title>
    <style>
        table { width: 600px; border-collapse: collapse; }
        th, td { height: 30px; border: 1px solid red; }
    </style>
</head>
<body>
    <h2>파일 - 3</h2>
    <table>
        <tr>
            <th>이름</th>
            <th>연락처</th>
            <th>주소</th>
        </tr>
        <?=$result?>
    </table>
</body>
</html>

▼실행 결과▼

 


3) php 파일 관련 함수


1. fopen()
- file() 함수보다 유연한 코드를 작성하기 위한 함수로, 모드를 설정하여 여러가지 파일에 대한 처리가 가능하다.

2. fgets()
- fopen() 함수로 open한 파일의 데이터를 읽어준다.

3. fputs()
- fopen() 함수로 open한 파일의 데이터를 저장한다.

4. feof()
- fopen 함수로 open한 파일의 데이터가 존재하는지 여부를 확인한다.

- file end of

5. fclose()
- fopen 함수로 open한 파일을 더이상 사용하지 않는다면 파일을 닫는다.

 

 

4) php 파일 실행 예제 - 2(파일 읽어오기)

<?php
    $fs = "";
    $fs = @fopen("tel.txt", "r") or exit("break"); // r은 읽기모드
    $result = "";

    while(!feof($fs)){
        $result .= fgets($fs, 10); // 10byte씩 읽음
    }
    fclose($fs);
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>파일 - 4</title>
</head>
<body>
    <h2>파일 - 4</h2>
    <p><?=$result?></p>
</body>
</html>

▼실행 결과▼

 

 

5) php 파일 실행 예제 - 3(댓글쓰기)

<?php
    // 댓글을 썻다면..
    if($_POST != null){
        // 텍스트 저장 모드 : w, 추가 저장 : a
        $fs = @fopen("reply.txt", "a") or exit("break");
        if($fs != null){
            $msg = $_POST['msg'];
            fputs($fs, $msg."\n");
            fclose($fs);
        }
    }

    $result = "";
    $fs = @fopen("reply.txt", "r") or exit("break");
    $i = 1;
    while(!feof($fs)){
        $msg = fgets($fs);
        if($msg != ""){
            $result = $i++ ." > " . $msg . "<br>" . $result;
        }
    }
    fclose($fs);
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>파일을 이용한 댓글 만들기</title>
</head>
<body>
    <h2>파일을 이용한 댓글 만들기</h2>
    <form action="./8-file5.php" method="post">
        <p><label>댓글 : <input type="text" name="msg"></label> <input type="submit" value="확인"></p>
    </form>
    <hr/>
    <p><?=$result?></p>
</body>
</html>

▼실행 결과▼

 

반응형