strpos avec des tableaux : une plongée plus approfondie
En PHP, la fonction strpos recherche une chaîne dans une autre chaîne. Souvent, nous rencontrons des situations dans lesquelles nous souhaitons rechercher plusieurs chaînes simultanément. Bien que le code fourni ne parvienne pas à effectuer cette tâche, nous pouvons explorer des solutions alternatives à l'aide d'un éventail de termes de recherche.
Fonction personnalisée pour les aiguilles de tableau
Une approche consiste à créer une fonction personnalisée qui imite la fonctionnalité de strpos pour un tableau d'aiguilles :
function strposa($haystack, $needles=array(), $offset=0) { $chr = array(); foreach($needles as $needle) { $res = strpos($haystack, $needle, $offset); if ($res !== false) $chr[$needle] = $res; } if(empty($chr)) return false; return min($chr); }
Cette fonction prend une chaîne de botte de foin, un tableau d'aiguilles à rechercher et un décalage facultatif. Il renvoie l'index de la première occurrence de l'une des aiguilles, ou false si aucune n'est trouvée.
Fonction personnalisée améliorée
Pour améliorer cette fonction, nous pouvons arrêter la recherche une fois la première aiguille trouvée :
function strposa(string $haystack, array $needles, int $offset = 0): bool { foreach($needles as $needle) { if(strpos($haystack, $needle, $offset) !== false) { return true; } } return false; }
Cette fonction mise à jour scanne la botte de foin pour chaque aiguille du tableau et renvoie vrai dès qu'elle trouve un match. C'est plus efficace lorsque plusieurs aiguilles peuvent être présentes dans la botte de foin.
Exemples d'utilisation
Pour utiliser ces fonctions, transmettez simplement la chaîne de la botte de foin et le tableau d'aiguilles comme arguments .
$string = 'This string contains word "cheese" and "tea".'; $array = ['burger', 'melon', 'cheese', 'milk']; if(strposa($string, $array)) { echo 'true'; // since "cheese" is found }
Dans cet exemple, le script renvoie vrai car "cheese" est une sous-chaîne de botte de foin.
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!