PHP入門 | テキストファイルの利用 | テキストを分割して処理する(explode, implode)

テキストファイルはさまざまなデータを処理するために使用される。例えば、Excelシートのように画面上に横方向へ並べるデータを作成する場合にも利用される。

このような「多くのデータが書かれたテキスト」の使い方が分かれば、テキストファイルを使って簡単なデータベースのように利用できるようになる。

では実際にやってみよう。まず、サンプルのdata.txtテキストファイルの内容を次のように変更する。

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

ここでは、個人情報、つまり名前、メールアドレス、電話番号をカンマで区切り、1行ずつ改行してデータを記述している。このようにすると、1行ずつデータを検索し、そこから各項目の値を取り出して処理できそうである。

これを読み込んで表示する例を見てみよう。

<?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>

アクセスすると、データがHTMLテーブルを使った表の形で表示される。

ここでは、fileでテキストを各行ごとの配列として取得し、forで繰り返し処理をしている。取得した行テキストはカンマ記号で3つのテキストに分割されて処理される。ここでは次の部分である。

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

これが$lines[$i]のテキストをカンマで分離している部分である。explodeとは、1番目の引数で指定した文字を使って2番目の引数のテキストを分割し、配列にまとめて返す関数である。ここではカンマ(,)を1番目の引数に指定している。すると、2番目の引数のテキストをカンマで分離する。分割された配列のテキストからカンマは消える。つまり、explodeで分割すると区切り文字はなくなるので注意しよう。

これとは逆に、配列にまとめたテキストを指定した区切り文字を使って1つのテキストにまとめることもできる。

$変数 = implode(区切り文字, 配列);

このimplode関数を使うと、配列の各要素のテキストを区切り文字で挟み、1つのテキストにまとめる。つまり、explodeで分解した配列を元に戻せるということである。セットで覚えておこう。