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

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

DDD
Libérer: 2024-11-27 11:59:13
original
682 Les gens l'ont consulté

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

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

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

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

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!

source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal