libro
www.tuyano.com
初心者のためのPHPプログラミング入門

テキストファイルの利用 (3/7)

作成:2010-12-05 12:16
更新:2010-12-05 12:16

■テキストを分割して処理する

テキストファイルは、さまざまなデータを扱うのに利用されます。例えば、Excelのシートのように、縦横にずらりと並べられたデータを記述するのにも利用されます。

こうした「たくさんのデータが記述されたテキスト」の利用の仕方がわかれば、テキストファイルを使って簡易データベース的な使い方ができるようになります。

では、実際にやってみましょう。まず、サンプルのテキストファイルdata.txtの中身を、以下のような形に書き換えてみます。
太郎,taro@yamada.jp,090-9999-9999
花子,hanako@flower.fr,080-8888-8888
イチロー,ichiro@baseball.com,070-7777-7777
ここでは、個人情報(名前、メールアドレス、電話番号)をカンマで区切り、1行ずつ改行してデータを記述してあります。このようにすれば、1行ずつデータを取り出し、そこから各項目の値を取り出して処理することができそうですね。

これを読み込んで表示するサンプルを下のリストに挙げておきます。アクセスすると、データがテーブルを使った表の形で表示されます。

ここでは、fileからテキストを各行毎の配列として取り出し、forの繰り返しで処理を行っています。取り出した行のテキストは、カンマ記号で3つのテキストに分割され処理されます。ここでは、
$arr = explode(",",$lines[$i]);
これが、$lines[$i]のテキストをカンマで分割しているところです。「explode」というのは、1つ目の引数に指定した文字を使って、2つ目の引数のテキストを分割し、配列にまとめて返すという関数です。ここでは","と1つ目の引数に指定をしていますね? これにより、2つ目の引数のテキストをカンマで分割していたのです。分割された配列のテキストからは、カンマは消えています。つまり、explodeで分割すると、区切り文字はなくなるので注意しましょう。

この反対に、配列にまとめたテキストを、指定の区切り文字を使って1つのテキストにまとめる関数もあります。
$変数 = implode( 区切り文字 , 配列 );
この「implode」関数を使うと、配列の各要素のテキストを、区切り文字で挟んで1つのテキストにまとめます。つまり、explodeで分解した配列を、これでもとに戻せるというわけです。セットで覚えておきましょう。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

<?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
	PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"
		xml:lang="ja" lang="ja"> 
	<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>

※関連コンテンツ

「初心者のためのPHPプログラミング入門」に戻る