1

サイズが を超えるテキスト ファイルはほとんどありません30MB

このような巨大なテキスト ファイルを PHP から読み取るにはどうすればよいですか?

4

2 に答える 2

6

すべてのデータを同時に処理する必要がない限り、データを分割して読み取ることができます。バイナリ ファイルの例:

<?php
$handle = fopen("/foo/bar/somefile", "rb");
$contents = '';
while (!feof($handle)) {
  $block = fread($handle, 8192);
  do_something_with_block($block);
}
fclose($handle);
?>

上記の例では、マルチバイト エンコーディングが壊れる可能性があります ( ǾUTF-8 などで 8192 バイトの境界をまたがるマルチバイト文字がある場合)。そのため、意味のあるエンドライン (テキストなど) を持つファイルの場合は、次のようにします。

<?php
$handle = fopen("/foo/bar/somefile", "rb");
$contents = '';
while (!feof($handle)) {
  $line = fgets($handle);
  do_something_with_line($line);
}
fclose($handle);
?>
于 2010-09-09T07:47:09.123 に答える
3

を使用してファイルを開き、 を使用しfopenて行を読み取ることができますfgets

$fh = fopen("file", "r");  // open file to read.

while (!feof($fh)) { // loop till lines are left in the input file.
        $buffer = fgets($fh); //  read input file line by line.
        .....
        }       
}       

fclose($fh);
于 2010-09-09T07:44:27.660 に答える