Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Adakah strposa Alternatif yang Lebih Cekap kepada strpos untuk Carian Berbilang Rentetan dalam PHP?

Adakah strposa Alternatif yang Lebih Cekap kepada strpos untuk Carian Berbilang Rentetan dalam PHP?

Patricia Arquette
Patricia Arquetteasal
2024-11-25 17:33:15111semak imbas

Is strposa a More Efficient Alternative to strpos for Multiple String Searches in PHP?

Utilitarian Strpos and Array-based Needle Searches

Apabila mencari berbilang rentetan dalam rentetan, strpos fungsi PHP terbina dalam mungkin tidak cukuplah. Untuk menangani perkara ini, coretan daripada php.net mencadangkan fungsi tersuai, strposa, yang cekap mencari kejadian pertama mana-mana rentetan daripada tatasusunan yang diberikan dalam rentetan tertentu.

Pelaksanaan strposa

function strposa(string $haystack, array $needles, int $offset = 0): bool 
{
    foreach($needles as $needle) {
        if(strpos($haystack, $needle, $offset) !== false) {
            return true; // stop on first true result
        }
    }

    return false;
}

Penggunaan Contoh

Pertimbangkan rentetan:

$string  = 'Whis string contains word "cheese" and "tea".';

Dan pelbagai rentetan:

$array  = ['burger', 'melon', 'cheese', 'milk'];

Menggunakan strposa:

if (strposa($string, $array, 1)) {
    echo 'true';
} else {
    echo 'false';
}

Ini akan menghasilkan benar kerana rentetan mengandungi jarum daripada tatasusunan, iaitu "keju".

Strposa yang dipertingkatkan

Versi strposa yang dikemas kini mengoptimumkan prestasi dengan menamatkan carian apabila padanan jarum pertama. Ini meningkatkan kecekapan apabila mencari berbilang jarum dalam timbunan jerami.

Atas ialah kandungan terperinci Adakah strposa Alternatif yang Lebih Cekap kepada strpos untuk Carian Berbilang Rentetan dalam PHP?. 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