戻る

テキストファイルをフォーマットしながら読み込む(参考)

fscanf()関数

fscanf()関数はテキストファイルから1行分のデータを読み込み、それらを指定のフォーマットに従って分割して、分割された個々のデータを指定の変数に代入します。この例では、ファイルハンドル「$fp」から読み込まれた1行のデータは、第2引数で指定された「"%s %s %s %s"」というフォーマットに従って分割されます。このフォーマットの場合、1行の文字列が半角スペースごとに区切られます。

それぞれに区切られたデータは、第3引数以降に列挙された変数に順番に代入されます。この時、変数名の前に「$」と「&」をつけることに注意してください。この例の場合、最初のスペースまでのデータが「$rank」、その次のスペースまでのデータが「$team」に代入されます。データの代入された変数は、通常の変数として扱うことができます。

fscanf()関数は、実行されるたびにファイルポインタを進めます。ファイル内のすべてのデータを読み込み終わるとFalseを返します。fscanf()関数自体の返り値を確認することによって、全データを読み込んだかを判断できます。

PHP

<?php
header("Content-type: text/html; charset=utf-8");

if(!$fp = @fopen("data/FIFARank.txt", "r")){
	echo "ファイルを開けませんでした!";
	exit();
}

$html = "";

while(fscanf($fp, "%s %s %s %s", $rank, $team, $area, $point)){
		$html .= "<tr>";
		$html .= "<td>" . $rank . "</td>";
		$html .= "<td>" . $team . "</td>";
		$html .= "<td>" . $area . "</td>";
		$html .= "<td>" . $point . "</td>";
		$html .= "</tr>";
}

fclose($fp);

$html = mb_convert_encoding($html, "utf-8", "shift_jis");
?>
<!DOCTYPE HTML>
<html lang="ja-JP">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<table border="1">
<tr>
	<td>ランク</td><td>チーム</td><td>地域</td><td>ポイント</td>
</tr>
<?=$html?>
</table>
</body>
</html>

inserted by FC2 system