Kaedah yang boleh digunakan untuk fail yang lebih kecil yang sesuai dalam ingatan andadua 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 tulissemua yang lainkefail.
Untuk fail yang besar, algoritmanya berbeza sedikit, tetapi secara keseluruhannya betul-betul sama.
Bahagian penting ialahFile Locking
Inilah sebabnya kami memilih pangkalan data.
Kaedah yang boleh digunakan untuk fail yang lebih kecil yang sesuai dalam ingatan andadua 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:
Untukfail yang lebih besarkaedah lain (kurang intensif memori) harus digunakan: