戻る

テキストファイルを1文字ずつ読み込む(参考)

fgetc()関数 feof()関数

fgetc()関数はテキストファイルから1文字ずつデータを読み込みます。この関数の引数には、fopen()関数の返り値であるファイルハンドルの変数を指定します。そして、読み込まれた1文字分のデータを返します。

この関数を実行するたびに、ファイルポインタ(現在の読み込み位置)が1文字分進みます。すべてのデータを読み切って終端(EOF)に達したかどうかは、feof()関数によって調べることができます。feof()関数の返り値がTrueかFalseかを検出して、全データを読み込んだかを判断できます。

fgetc()関数は1バイトずつデータを取り出すので、全角文字が含まれていると途中で分断して読み込まれます。このため、「print fgetc($fp)」のようにした場合には文字化けします。この例はすべての文字を$htmlに再結合してから出力しているので、この問題は回避されます。

PHP

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

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

while(!feof($fp)){
	$html .= fgetc($fp);
}

fclose($fp);

$html  mb_convert_encoding($html, "utf-8", "shift_jis");

echo $html;
?>

inserted by FC2 system