Maison >développement back-end >tutoriel php >Comment localiser la deuxième (ou la nième) occurrence d'une chaîne en utilisant la récursion en PHP ?

Comment localiser la deuxième (ou la nième) occurrence d'une chaîne en utilisant la récursion en PHP ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-18 14:43:30447parcourir

How to Locate the Second (or nth) Occurrence of a String Using Recursion in PHP?

Localisation de plusieurs occurrences d'une chaîne avec strpos : dévoiler la deuxième occurrence

strpos est une fonction puissante qui permet aux programmeurs de déterminer la position de la première occurrence d'une sous-chaîne dans une chaîne. Mais que se passe-t-il si l’objectif est d’identifier la deuxième occurrence ? Cette question se pose souvent, en particulier lorsqu'il s'agit de tâches complexes de manipulation de données.

Réponse : adopter la récursivité pour les recherches successives

Pour relever ce défi, les développeurs peuvent tirer parti de la récursivité, un technique particulièrement adaptée à ce scénario. Voici comment procéder :

  1. Récupération de la première occurrence : Commencez par utiliser strpos pour trouver la position de la première occurrence de la sous-chaîne.
  2. Récursif Appel : Si l'occurrence souhaitée est supérieure à 1, effectuez un appel récursif à strpos, en spécifiant cette fois une position de départ décalée vers l'avant de la longueur de la sous-chaîne obtenue à partir de la première occurrence.
  3. Récurseur jusqu'à l'occurrence souhaitée : Répétez步骤2 jusqu'à ce que l'occurrence souhaitée soit trouvée.

Fonction personnalisée pour simplifier le processus

Pour rationaliser ce processus, une fonction personnalisée peut être développée :

function strposX($haystack, $needle, $number) {
    if ($number == 1) {
        return strpos($haystack, $needle);
    } elseif ($number > 1) {
        return strpos($haystack, $needle, strposX($haystack, $needle, $number - 1) + strlen($needle));
    } else {
        return error_log('Error: Value for parameter $number is out of range');
    }
}

Alternativement, une version simplifiée peut être utilisée :

function strposX($haystack, $needle, $number = 0)
{
    return strpos($haystack, $needle,
        $number > 1 ?
        strposX($haystack, $needle, $number - 1) + strlen($needle) : 0
    );
}

En incorporant ces approches, les programmeurs peuvent identifier efficacement plusieurs occurrences d'un sous-chaîne, y compris la deuxième occurrence, leur offrant des capacités améliorées de manipulation de chaînes.

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