php 입문 | 텍스트 파일 이용 | 텍스트를 분할하여 처리(explode, implode)

텍스트 파일은 다양한 데이터를 처리하는데 사용된다. 예를 들어, Excel 시트처럼 화면에 가로로 늘어 놓는 데이터를 작성하는 데에도 이용된다.

이러한 “많은 데이터가 작성된 텍스트"를 사용하는 방법을 알면, 텍스트 파일을 사용하여 간단한 데이터베이스적인 사용이 가능하게 된다.

그럼 실제로 해보자. 먼저 샘플 data.txt 텍스트 파일의 내용을 다음과 같이 내용을 변경한다.

원석, won@flower.ko, 010-9999-9999
성진, sung@yamada.jp, 010-8888-8888
병호, byeong@baseball.com, 010-7777-7777

여기에서는 개인 정보(이름, 이메일 주소, 전화 번호)를 쉼표로 구분해서 한줄씩 줄바꿈하여 데이터를 기술되어 있다. 이렇게 하면 한줄씩 데이터를 검색하여 거기에서 각 항목의 값을 꺼내 처리할 수 있을 것 같다.

이것을 읽어 표시하는 예제를 보도록 하자.

<?php
    $lines = @file("data.txt") or $result = "파일을 읽을 수 없습니다.";
    if ($lines != null) {
        $result = '<table border="1">';
        $result .= "<tr><th>NAME</th><th>MAIL</th><th>TEL</th></tr>";
        for($i = 0; $i < count($lines); $i++){
            $result .= "<tr>";
            $arr = explode(",", $lines[$i]);
            for($j = 0;$j < 3;$j++){
                $result .= "<td>{$arr[$j]}</td>";
            }
            $result .= "</tr>";
        }
        $result .= "</table>";
    }
?>
<!DOCTYPE html>
<html lang="ko">
    <head> 
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
        <title>sample page</title>
    </head>
    <body>
        <h1>Hello PHP!</h1>
        <p><?php echo $result; ?></p>
    </body>
</html>

액세스하면 데이터가 테이블을 사용한 테이블의 형태로 나타난다.

여기에서 file에서 텍스트를 각 행마다 배열로 얻어내어, for의 반복 처리를 하고 있다. 얻어온 행 텍스트는 쉼표 기호로 3개의 텍스트로 분할되어 처리된다. 여기에서는

$arr = explode(",", $lines[$i]);

이것이 $lines[$i]의 텍스트를 쉼표로 분리하고 있는 부분이다. “explode"라고 하는 것은, 첫번째 인수로 지정한 문자를 사용하여 두 번째 인수의 텍스트를 분할하고 배열에 정리해 반환하는 함수이다. 여기에서는 쉼표(,)를 첫번째 인수로 지정하고 있다. 그러면, 두번째 인수의 텍스트를 쉼표로 분리하고 있다. 분할 된 배열의 텍스트에서 쉼표은 사라진다. 즉, explode로 분할하면 단락 문자는 없게 되므로 주의하자.

이와 반대로 배열에 정리한 텍스트를 지정된 구분 기호를 사용하여 하나의 텍스트로 정리할 수도 있다.

$변수 = implode(구분 문자, 배열);

이 “implode"함수를 사용하면 배열의 각 요소의 텍스트를 구분 기호 사이에 두고 하나의 텍스트로 정리한다. 즉, explode으로 분해한 배열을 바탕으로 되돌릴 수 있다는 것이다. 세트로 기억하도록 하자.