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

Susan Sarandon
Libérer: 2024-10-18 14:43:30
original
266 Les gens l'ont consulté

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');
    }
}
Copier après la connexion

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
    );
}
Copier après la connexion

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!

source:php
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!