Cara Semak sama ada Fail Mengandungi Rentetan dalam PHP
Untuk menentukan sama ada rentetan tertentu terdapat dalam fail, mari kita terokai penyelesaian dan alternatif yang lebih cekap.
Kod Asal:
Kod yang disediakan cuba menyemak kehadiran rentetan dalam fail, dilambangkan dengan pembolehubah $id , dengan membaca fail baris demi baris. Walau bagaimanapun, keadaan (strpos($buffer, $id) === false) dalam gelung while salah menyemak ketiadaan rentetan, yang membawa kepada penolakan logik hasil yang diingini.
Penyelesaian yang Diperbaiki:
Untuk membetulkan keadaan, kami boleh memudahkan kod menggunakan fungsi file_get_contents(), yang membaca keseluruhan fail menjadi rentetan. Kemudian, fungsi strpos() boleh digunakan untuk menyemak kehadiran rentetan $id dalam rentetan ini:
<code class="php">if( strpos(file_get_contents("./uuids.txt"),$_GET['id']) !== false) { // do stuff }</code>
Dengan menggunakan pendekatan ini, kami mengelakkan lelaran melalui fail baris demi baris, yang boleh menjimatkan masa dan memori, terutamanya untuk fail besar.
Kaedah Alternatif (untuk Fail Sangat Besar):
Untuk fail yang terlalu besar, bergantung pada operasi fail untuk mencari kerana rentetan boleh menimbulkan cabaran prestasi. Sebagai alternatif, kita boleh menggunakan arahan grep:
<code class="php">if( exec('grep '.escapeshellarg($_GET['id']).' ./uuids.txt')) { // do stuff }</code>
Pendekatan ini menggunakan utiliti grep sistem untuk mencari rentetan dalam fail, mengurangkan beban kerja pada skrip PHP itu sendiri sambil memberikan kecekapan yang setanding.
Atas ialah kandungan terperinci Bagaimana untuk Memeriksa Rentetan dalam Fail dengan Cekap dengan PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!