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

Cara Mencari Kejadian Kedua Rentetan Menggunakan strpos

Mary-Kate Olsen
Lepaskan: 2024-10-18 14:45:30
asal
383 orang telah melayarinya

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>
Salin selepas log masuk

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!

sumber:php
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan