Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Fungsi dalam PHP8: Teknik carian rentetan yang cekap untuk str_contains()

Fungsi dalam PHP8: Teknik carian rentetan yang cekap untuk str_contains()

WBOY
WBOYasal
2023-05-16 08:07:461314semak imbas

Fungsi dalam PHP8: Teknik carian rentetan yang cekap untuk str_contains()

Dengan keluaran PHP8, kami mempunyai lebih banyak ciri dan penambahbaikan baharu, salah satu ciri baharu yang paling penting ialah fungsi str_contains(). Fungsi ini boleh digunakan untuk menentukan sama ada rentetan mengandungi rentetan lain. Dalam artikel ini, kami akan mendalami fungsi str_contains() dan penggunaannya dalam PHP, dan cara menggunakannya untuk carian rentetan yang cekap.

Kelemahan kaedah konvensional

Pada masa lalu, untuk mencari subrentetan tertentu dalam rentetan, kami biasanya menggunakan fungsi strpos(). Fungsi ini mencari rentetan dalam rentetan lain dan mengembalikan kedudukan pertama yang ditemui. Sebagai contoh, cari kejadian pertama "hello" dalam rentetan:

$string = 'hello world';
$position = strpos($string, 'hello');

Walau bagaimanapun, fungsi strpos() mempunyai kecacatan, iaitu, ia akan berhenti selepas mencari subrentetan pertama yang sepadan. Jika kita ingin mencari semua subrentetan yang sepadan dalam rentetan, kita mesti menggunakan gelung untuk mencari setiap subrentetan yang sepadan:

$string = 'hello world';
$needle = 'l';
$offset = 0;
$positions = array();
while (($position = strpos($string, $needle, $offset)) !== false) {
    $positions[] = $position;
    $offset = $position + 1;
}

Walaupun kaedah ini berkesan, kodnya agak bertele-tele dan kelajuan carian juga lebih perlahan . Dalam kes ini, fungsi str_contains() jelas akan menjadi lebih cekap.

fungsi str_contains()

fungsi str_contains() ialah fungsi baharu yang ditambah dalam PHP8 Ia boleh menentukan sama ada rentetan mengandungi rentetan lain. Fungsi ini hanya perlu melepasi dua parameter: rentetan untuk dicari dan subrentetan untuk dicari. Ia mengembalikan nilai Boolean yang menunjukkan sama ada subrentetan yang sepadan ditemui dalam rentetan yang sedang dicari. Berikut ialah contoh mudah:

$string = 'hello world';
$needle = 'hello';
$is_contains = str_contains($string, $needle);

Dalam kes ini, nilai $is_contains adalah benar. Jika kita memanggil fungsi ini sekali lagi tetapi tetapkan pembolehubah $needle kepada "selamat tinggal", nilai $is_contains akan menjadi palsu.

Secara dalaman, fungsi str_contains() menggunakan algoritma yang lebih cekap untuk mencari subrentetan. Berbanding dengan fungsi strpos(), ia lebih cekap dan kodnya lebih ringkas.

Tingkatkan kecekapan carian

Walaupun fungsi str_contains() itu sendiri sangat cekap, terdapat beberapa teknik yang boleh membantu kami meningkatkan lagi kecekapan carian. Berikut ialah beberapa petua:

  1. Jangan mencari berulang kali

Jika kita perlu mencari rentetan beberapa kali, maka kita harus mengelak daripada mencari rentetan itu berulang kali. Sebaliknya, kita harus mencari rentetan sekali dan menyimpan hasilnya dalam pembolehubah. Kita kemudian boleh menggunakan pembolehubah ini untuk menentukan sama ada rentetan mengandungi subrentetan tertentu tanpa perlu mencari sekali lagi setiap kali.

  1. Meminimumkan skop carian

Jika kita perlu mencari subrentetan dalam rentetan panjang, maka kita boleh cuba mengecilkan skop carian. Sebagai contoh, kita boleh menggunakan fungsi substr() untuk memintas sebahagian daripada rentetan asal dan kemudian mencari subrentetan ini. Ini boleh mengurangkan kerumitan masa.

  1. Elakkan menggunakan fungsi str_contains() dalam gelung

Walaupun fungsi str_contains() sangat cekap, menggunakannya dalam gelung boleh melambatkan carian. Jika kita perlu mencari berbilang subrentetan dalam gelung, maka kita harus menyimpan subrentetan ini terlebih dahulu dalam tatasusunan dan kemudian memanggil fungsi str_contains() di luar gelung. Ini mengelakkan panggilan fungsi berulang dan sangat mempercepatkan carian.

Kesimpulan

Fungsi str_contains() ialah fungsi baharu yang sangat berguna dalam PHP8. Ia boleh membantu kita dengan cepat menentukan sama ada rentetan mengandungi rentetan lain. Ia lebih cekap daripada kaedah konvensional dan kodnya lebih bersih. Walaupun ia sudah sangat cekap, kami masih boleh menggunakan beberapa helah untuk meningkatkan kecekapan carian. Sama ada anda sedang mencari rentetan besar atau berbilang subrentetan, menggunakan fungsi str_contains() ialah pilihan yang sangat baik.

Atas ialah kandungan terperinci Fungsi dalam PHP8: Teknik carian rentetan yang cekap untuk str_contains(). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn