Maison  >  Article  >  développement back-end  >  Comment trouver la deuxième occurrence d'une chaîne à l'aide de strpos

Comment trouver la deuxième occurrence d'une chaîne à l'aide de strpos

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-18 14:45:30248parcourir

How to Find the Second Occurrence of a String Using strpos

Recherche de la deuxième occurrence d'une chaîne à l'aide de strpos

La fonction strpos en PHP est couramment utilisée pour trouver la position de la première occurrence de une sous-chaîne dans une chaîne. Cependant, il peut y avoir des cas où vous devrez récupérer la deuxième occurrence ou les occurrences suivantes.

Récursif avec strpos

Pour trouver la deuxième occurrence d'une sous-chaîne, une approche est pour utiliser la récursivité et exploiter les fonctionnalités existantes de strpos. Ceci peut être réalisé en appelant strpos à plusieurs reprises, en passant l'index de l'occurrence précédente comme position de départ pour la recherche suivante :

<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>

Cette approche exploite la récursivité pour trouver de manière itérative les occurrences suivantes de la sous-chaîne jusqu'à l'occurrence souhaitée. est trouvé ou la fin de la chaîne est atteinte.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn