Comment rechercher plusieurs modèles dans une chaîne à l'aide d'un tableau
La fonction strpos est un outil puissant pour rechercher une sous-chaîne spécifique dans un chaîne. Cependant, il ne peut rechercher qu’un seul modèle à la fois. Que se passe-t-il si vous devez vérifier si une chaîne contient l'un des éléments d'une liste de modèles ?
Considérez l'exemple suivant :
$find_letters = ['a', 'c', 'd']; $string = 'abcdefg';
Si nous essayons de rechercher dans la chaîne le tableau de lettres en utilisant strpos, ça ne marchera pas. En effet, strpos attend une chaîne comme deuxième argument, pas un tableau.
Création d'une fonction pour la recherche de tableau avec strpos
Pour résoudre ce problème, nous pouvons créer une fonction personnalisée qui accepte un tableau de modèles et une chaîne à rechercher. La fonction parcourra le tableau, appelant strpos pour chaque modèle et renverra la position de la première correspondance trouvée :
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; }
Cette fonction peut être utilisée comme suit :
$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
Conclusion
En créant une fonction personnalisée qui enveloppe la fonctionnalité strpos, nous pouvons désormais rechercher efficacement dans une chaîne plusieurs modèles à l'aide d'un tableau. Cette technique peut être utile dans divers scénarios, tels que la validation d'une saisie utilisateur ou l'analyse de texte.
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!