Maison >développement back-end >tutoriel php >Comment puis-je rechercher efficacement plusieurs sous-chaînes dans une chaîne à l'aide de PHP ?

Comment puis-je rechercher efficacement plusieurs sous-chaînes dans une chaîne à l'aide de PHP ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-15 03:15:10980parcourir

How Can I Efficiently Search a String for Multiple Substrings Using PHP?

Utilisation d'un tableau pour rechercher des chaînes avec strpos

La fonction strpos est couramment utilisée pour localiser la position d'une sous-chaîne dans une chaîne. Cependant, il peut parfois être utile de rechercher plusieurs sous-chaînes simultanément à l'aide d'un tableau d'aiguilles.

Le problème

Malheureusement, l'implémentation standard de strpos ne nous permet pas pour passer une série d'aiguilles. Tenter de le faire, comme le montre l'exemple fourni, entraînera des résultats insatisfaisants.

La solution

Heureusement, une fonction personnalisée peut être créée pour étendre la fonctionnalité de strpos et accueillir des rangées d’aiguilles. L'extrait de code suivant, inspiré des contributions de la communauté PHP, fournit une solution :

function strposa(string $haystack, array $needles, int $offset = 0): bool 
{
    foreach($needles as $needle) {
        if(strpos($haystack, $needle, $offset) !== false) {
            return true; // stop on first true result
        }
    }

    return false;
}

Utilisation

Pour utiliser cette fonction, vous pouvez transmettre la chaîne de botte de foin , le tableau d'aiguilles et un décalage facultatif comme paramètres. Par exemple :

$string = 'This string contains word "cheese" and "tea".';
$array  = ['burger', 'melon', 'cheese', 'milk'];
var_dump(strposa($string, $array)); // will return true, since "cheese" has been found

Cela recherchera dans la chaîne la présence de l'une des aiguilles du tableau. Si une aiguille est trouvée, la fonction retournera vrai, arrêtant toute itération ultérieure.

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