Kaedah yang boleh digunakan untuk fail yang lebih kecil yang sesuai dalam ingatan anda dua kali:
$data = file('myfile'); // reads 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);
Nota ringkas, PHP > 5.3.0 menyokong fungsi lambda, jadi anda boleh mengalih keluar pengisytiharan fungsi yang dinamakan dan memendekkan pemetaan kepada:
Anda perlu menulis ganti keseluruhan fail.
Jadi, untuk fail yang agak kecil, baca fail ke dalam tatasusunan , cari perkataan, gantikan baris yang ditemui, dan tulis semua yang lain ke fail.
Untuk fail yang besar, algoritmanya berbeza sedikit, tetapi secara keseluruhannya betul-betul sama.
Bahagian penting ialah File Locking
Inilah sebabnya kami memilih pangkalan data.
Kaedah yang boleh digunakan untuk fail yang lebih kecil yang sesuai dalam ingatan anda dua kali:
Nota ringkas, PHP > 5.3.0 menyokong fungsi lambda, jadi anda boleh mengalih keluar pengisytiharan fungsi yang dinamakan dan memendekkan pemetaan kepada:
Secara teorinya anda boleh menjadikannya satu (lebih sukar untuk diikuti) pernyataan php:
Untuk fail yang lebih besarkaedah lain (kurang intensif memori) harus digunakan: