Bagaimana untuk Menggantikan Baris yang Mengandungi Perkataan Khusus dalam Fail Teks dengan Cekap?

Barbara Streisand
Lepaskan: 2024-11-12 08:20:02
asal
209 orang telah melayarinya

How to Efficiently Replace a Line Containing a Specific Word in a Text File?

Cari dan Gantikan Baris Tertentu dalam Fail Teks

Mengendalikan fail teks ialah tugas biasa dalam banyak senario pengaturcaraan. Apabila bekerja dengan fail besar, ia boleh menjadi satu cabaran untuk mengenal pasti dan mengubah suai baris teks tertentu tanpa mengetahui nombor barisnya yang tepat. Artikel ini menunjukkan pendekatan yang berkesan untuk menggantikan baris yang mengandungi perkataan tertentu dalam fail teks menggunakan PHP, tanpa mengira kedudukannya dalam fail.

Pendekatan 1: Mengendalikan Fail yang Lebih Kecil dalam Ingatan

Untuk fail yang lebih kecil yang boleh dimuatkan sepenuhnya ke dalam memori, penyelesaian yang cekap ialah membaca semua baris ke dalam tatasusunan dan kemudian menggunakan fungsi gantian. Coretan kod berikut berjalan melalui proses ini:

$data = file('myfile'); // read an array of lines

function replace_a_line($data) {
   if (stristr($data, 'certain word')) {
     return "replacement line!\n";
   }
   return $data;
}

$data = array_map('replace_a_line', $data);

file_put_contents('myfile', $data);
Salin selepas log masuk

Dengan PHP versi 5.3.0 dan ke atas, anda boleh menggunakan fungsi lambda untuk memudahkan langkah penggantian:

$data = array_map(function($data) {
  return stristr($data,'certain word') ? "replacement line\n" : $data;
}, $data);
Salin selepas log masuk

Pendekatan 2: Mengendalikan Fail Yang Lebih Besar Dengan Cekap

Namun, untuk fail yang lebih besar yang mungkin melebihi memori yang tersedia, strategi berbeza diperlukan. Contoh kod berikut menggunakan pendekatan penstriman untuk membaca dan menggantikan baris tertentu sambil menggunakan memori yang minimum:

$reading = fopen('myfile', 'r');
$writing = fopen('myfile.tmp', 'w');

$replaced = false;

while (!feof($reading)) {
  $line = fgets($reading);
  if (stristr($line,'certain word')) {
    $line = "replacement line!\n";
    $replaced = true;
  }
  fputs($writing, $line);
}

fclose($reading); fclose($writing);

// Handle the replacement result
if ($replaced)
{
  rename('myfile.tmp', 'myfile');
} else {
  unlink('myfile.tmp');
}
Salin selepas log masuk

Dalam senario ini, jika sekurang-kurangnya satu baris diganti, fail sementara 'myfile.tmp' dinamakan semula kepada 'myfile,' dengan berkesan menimpa fail asal dengan kandungan yang dikemas kini. Jika tidak, jika tiada penggantian dibuat, fail sementara akan dipadamkan.

Kesimpulan

Teknik ini menyediakan kaedah yang cekap dan fleksibel untuk mencari dan menggantikan baris tertentu dalam fail teks berdasarkan perkataan tertentu. Sama ada berurusan dengan fail yang lebih kecil yang muat dalam memori atau fail yang lebih besar yang memerlukan pendekatan penstriman, penyelesaian ini menawarkan pendekatan praktikal untuk mengendalikan tugas manipulasi fail teks biasa ini.

Atas ialah kandungan terperinci Bagaimana untuk Menggantikan Baris yang Mengandungi Perkataan Khusus dalam Fail Teks dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan