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で分解した配列を元に戻せるということである。セットで覚えておこう。