ホームページ >php教程 >php手册 >大きなファイル内のコンテンツの特定の行を読み取り、変更するための PHP コード

大きなファイル内のコンテンツの特定の行を読み取り、変更するための PHP コード

WBOY
WBOYオリジナル
2016-06-13 12:21:041025ブラウズ

コードをコピー コードは次のとおりです:


$fp = fopen('d:/file.txt', 'r ') ;
if ($fp) {
$i = 1;
while (!feof($fp)) {
//データの 2 行目を変更します
if ($i = = 2) {
fseek($fp, 2, SEEK_CUR);
break;
fgets($fp); >$i;
}
fclose($fp);
}


ここで注意する必要があるのは、fgets が行を取得した後、ファイル ポインタがしたがって、fwrite は fgets の次の行の先頭で動作します。行のどの文字から書き始めるかについては、fseek 関数を使用して移動できます。ファイルポインタ。もう 1 つ注意すべき点は、ここでの fwrite は挿入操作ではなく置換操作を実行するため、ポインターの後の文字が 1 つずつ置き換えられることです。挿入方法については、まだ勉強していません。難しいと推測されます。効率を高めるために、別の一時ファイルに書き込むことしかできないかもしれません。他に良い方法があるかどうかはわかりません。

さらに、今日は SPL を使用して操作する方法も見ました:



コードをコピーします

コードは次のとおりです: $fp = new SplFileObject('d:/file.txt', 'r ');

//seek メソッドのパラメータは 0 からカウントされます。ポインタが行末を指しているので、3行目を修正しました。

$fp->seek(1)
//現在の行の内容を取得します(2行目)
$line = $fp->current();
//以下は 3 行目の操作です
$fp->fseek(2, SEEK_CUR); #');


SplFileObject 提供されるメソッドは、ファイル行を走査するためのキー/値メソッドの使用など、基本的なファイル操作関数よりも豊富です。 SPL は PHP5 に追加する必要があります。他にも便利なオブジェクトがたくさんあります。配列、ファイル ディレクトリ操作、例外処理、いくつかの基本的な型操作などが含まれます。これらのメソッドは、基になる操作の処理をより便利にするために、SPL を継承することでまだ追加されています。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。