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.
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);
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);
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'); }
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.
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!