Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara Mencari Kejadian Kedua Rentetan Menggunakan strpos

Cara Mencari Kejadian Kedua Rentetan Menggunakan strpos

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-18 14:45:30248semak imbas

How to Find the Second Occurrence of a String Using strpos

Mencari Kejadian Kedua Rentetan Menggunakan strpos

Fungsi strpos dalam PHP biasanya digunakan untuk mencari kedudukan kejadian pertama bagi subrentetan dalam rentetan. Walau bagaimanapun, mungkin terdapat keadaan di mana anda perlu mendapatkan kejadian kedua atau seterusnya.

Berulang dengan strpos

Untuk mencari kejadian kedua subrentetan, satu pendekatan ialah untuk menggunakan rekursi dan memanfaatkan kefungsian strpos sedia ada. Ini boleh dicapai dengan menggunakan strpos berulang kali, melepasi indeks kejadian sebelumnya sebagai kedudukan permulaan untuk carian seterusnya:

<code class="php"><?php

/**
 * Find the position of the Xth occurrence of a substring in a string
 *
 * @param string $haystack The input haystack string
 * @param string $needle The substring to search for
 * @param int $number The occurrence number to find
 * @return int|bool The index of the Xth occurrence or false if not found
 */
function strposX($haystack, $needle, $number) {
    // Handle the base case (finding the first occurrence)
    if ($number == 1) {
        return strpos($haystack, $needle);
    } 
    // Recursively search for the Nth occurrence (N > 1)
    elseif ($number > 1) {
        $previousOccurrence = strposX($haystack, $needle, $number - 1);
        // If the previous occurrence is found, continue searching from there
        if ($previousOccurrence !== false) {
            return strpos($haystack, $needle, $previousOccurrence + strlen($needle));
        }
    } 
    // If the conditions are not met, return an error or false
    return false;
}

// Example usage
$haystack = 'This is a test string.';
$needle = 'is';
$secondOccurrence = strposX($haystack, $needle, 2);

if ($secondOccurrence !== false) {
    echo 'The second occurrence of "' . $needle . '" is at index ' . $secondOccurrence . ' in "' . $haystack . '".';
} else {
    echo 'The second occurrence of "' . $needle . '" was not found.';
}</code>

Pendekatan ini memanfaatkan rekursi untuk mencari berulang-ulang kejadian berikutnya bagi subrentetan sehingga kejadian yang diingini ditemui atau hujung rentetan dicapai.

Atas ialah kandungan terperinci Cara Mencari Kejadian Kedua Rentetan Menggunakan strpos. 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