Gantikan keseluruhan baris dalam fail teks apabila perkataan tertentu ditemui
P粉883278265
P粉883278265 2023-10-18 16:59:05
0
2
414

Bagaimana untuk menggantikan baris teks tertentu dalam fail menggunakan php?

Saya tidak tahu nombor talian. Saya mahu menggantikan baris yang mengandungi perkataan tertentu.

P粉883278265
P粉883278265

membalas semua (2)
P粉138711794

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.

    P粉155710425

    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:

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

    Secara teorinya anda boleh menjadikannya satu (lebih sukar untuk diikuti) pernyataan php:

    file_put_contents('myfile', implode('', array_map(function($data) { return stristr($data,'certain word') ? "replacement line\n" : $data; }, file('myfile')) ));

    Untukfail yang lebih besarkaedah lain (kurang intensif memori) harus digunakan:

    $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); // might as well not overwrite the file if we didn't replace anything if ($replaced) { rename('myfile.tmp', 'myfile'); } else { unlink('myfile.tmp'); }
      Muat turun terkini
      Lagi>
      kesan web
      Kod sumber laman web
      Bahan laman web
      Templat hujung hadapan
      Tentang kita Penafian Sitemap
      Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!