Lors du développement d'applications Web, nous devons souvent rechercher dans une grande quantité de données. Pour les correspondances exactes ordinaires, STRPOS ou d'autres fonctions de chaîne peuvent être utilisées. Cependant, lorsque nous devons faire des recherches floues, PHP offre une fonction très pratique - Stripos . Cette fonction nous permet de trouver l'emplacement d'une sous-chaîne dans une chaîne et est insensible à la recherche lors de la recherche.
La fonction StripOS est utilisée pour trouver où une chaîne (sous-chaîne) apparaît d'abord dans une autre chaîne. Contrairement à la fonction STRPOS , STRPOS ignore le cas lors de la recherche. Cela signifie que peu importe que la chaîne cible soit en majuscule ou en minuscules, Stripos peut trouver correctement la correspondance.
stripos(string $haystack, string $needle, int $offset = 0): int|false
Haystack : la chaîne cible à rechercher.
aiguille : la sous-chaîne à trouver.
Offset (facultatif): Démarrez la recherche à partir de l'endroit où dans la chaîne cible, la valeur par défaut est 0 (démarrer à partir de zéro).
Si une correspondance est trouvée, Stripos renvoie la position de début (position d'index) de la sous-chaîne correspondante, et si elle n'est pas trouvée, faux .
Supposons que nous ayons une base de données qui stocke les adresses e-mail pour plusieurs utilisateurs. Nous espérons que lorsqu'un utilisateur entre dans un mot-clé de recherche, toutes les adresses e-mail liées au mot clé peuvent être trouvées par correspondance floue.
Voici un exemple de PHP simple qui montre comment implémenter la recherche floue à l'aide de Stripos :
<?php
// Rechercher des mots clés entrés par les utilisateurs
$searchKeyword = "example";
// Supposons qu'il y ait un tableau d'adresses e-mail
$emailList = [
"user1@m66.net",
"user2@m66.net",
"contact@m66.net",
"admin@example.com",
"test@example.com"
];
// Stocker les résultats de correspondance
$matchingEmails = [];
// Itérer via le tableau d'adresse e-mail,Effectuer une recherche floue
foreach ($emailList as $email) {
if (stripos($email, $searchKeyword) !== false) {
$matchingEmails[] = $email;
}
}
// Résultats de correspondance de sortie
echo "Adresse e-mail appariée:\n";
foreach ($matchingEmails as $email) {
echo $email . "\n";
}
?>
Nous définissons un mot-clé de recherche $ searchKeyword et supposons que nous avons une gamme d'adresses e-mail $ emaillist .
Utilisez ForEach pour parcourir chaque adresse e-mail et appeler des stripos pour une correspondance floue. Si une correspondance est trouvée, l'adresse e-mail est ajoutée au tableau $ MatchingEmails .
Enfin, nous imprimons toutes les adresses e-mail correspondantes.
Dans l'exemple ci-dessus, Stripos ignore le cas et peut trouver efficacement les adresses e-mail contenant des mots clés.
La fonction Stripos convient à de nombreux scénarios de recherche floue, les applications courantes incluent:
Moteurs de recherche : recherchez des documents, du contenu ou des enregistrements contenant les mots clés saisis par les utilisateurs.
Analyse du journal : Trouvez des mots clés ou des messages d'erreur spécifiques dans un grand nombre de fichiers journaux.
Filtrage de contenu : filtrez le contenu inutile ou effectuez une revue de contenu en fonction de mots clés spécifiques.
Problèmes de performances : bien que la fonction SCRIPOS soit très pratique, si le volume de données est très important, un appel fréquent à la fonction peut affecter les performances. Envisagez d'utiliser la fonction de récupération ou la technologie de mise en cache de la base de données pour améliorer l'efficacité.
Méthode de correspondance : Stripos est insensible à la casse, mais si vous devez être sensible à la casse, vous pouvez utiliser la fonction STRPOS .
Position de match : Stripos renvoie la position de départ du match. Si vous devez obtenir des informations d'appariement plus détaillées, vous pouvez l'utiliser en combinaison avec d'autres fonctions.