PHP を使用した単語の一致に基づいたテキスト ファイルの行の置換
行番号が不明なシナリオで、単語に基づいて特定の行を置換マッチングは困難な作業になる場合があります。幸いなことに、PHP には、この状況に対処するためのいくつかの効果的なアプローチが用意されています。
小さいファイルの場合 (メモリに収まる):
- ファイル全体を配列に読み取ります。行を使用して file('myfile').
-
次のような目的の行を置き換える関数を作成します。 replace_a_line($data):
- stristr($data, '特定の単語') を使用して、行に対象の単語が含まれているかどうかを確認します。
- 見つかった場合は、置換行をstring.
- それ以外の場合は、元の文字列を返しますline.
- array_map('replace_a_line', $data) を使用して、配列内の各行に置換関数を適用します。
- 次を使用して、変更した配列をファイルに書き込みますfile_put_contents('myfile', $data).
-
を使用してメソッドを強化しますarray_map を単純化するラムダ関数:
- $data = array_map(function($data) { ... }, $data);
より大きなファイルの場合 (メモリ集中):
- fopen('myfile', 'r') と fopen('myfile.tmp', 'w') をそれぞれ使用して、読み取りと書き込みのためにファイルを開きます。
- 置換が行われたかどうかを示すフラグを設定します ($replaced)。
- 次を使用して入力ファイルの各行を読み取ります。 fgets($reading).
- stristr($line, '特定の単語') を使用して対象の単語の存在を確認します。
- 見つかった場合は、その行を修正されたバージョンに置き換えます。
- fputs($writing, $line) を使用して、更新された行を出力ファイルに書き込みます。
- その後ファイル ハンドルを閉じます処理中。
- 置換が行われた場合のみ、元のファイルを変更されたファイルで置換します (rename('myfile.tmp', 'myfile'))。置換が必要ない場合は一時ファイルを削除します (unlink(' myfile.tmp')).
以上がPHP の単語一致に基づいてテキスト ファイル内の行を置換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。