Dans PHP, la fonction StripOs () est utilisée pour trouver où une chaîne apparaît d'abord dans une autre chaîne et est insensible à la cas. Si vous souhaitez implémenter la recherche floue de plusieurs mots clés en PHP, comment gérer la correspondance de plusieurs mots clés? Ce problème est un peu compliqué car StripOs () lui-même ne prend pas en charge la correspondance de plusieurs mots clés à la fois, il ne prend en charge que la recherche de mots clés unique.
Tout d'abord, comprenons l'utilisation de base de stripos () :
<?php
$haystack = "Welcome to m66.net, the best place to learn PHP!";
$needle = "m66.net";
$position = stripos($haystack, $needle);
if ($position !== false) {
echo "Found '$needle' at position $position";
} else {
echo "'$needle' not found";
}
?>
Dans le code ci-dessus, nous utilisons stripos () pour trouver l'aiguille $ dans la couronne de hayst de String et retourner sa position. Si le match réussit, il renvoie la position de départ du mot-clé dans la chaîne; Si aucune correspondance n'est atteinte, il renvoie faux .
Pour obtenir une recherche floue de plusieurs mots clés, la façon la plus simple de le faire est d'utiliser StripOs () pour parcourir chaque mot-clé. Si l'un des mots clés est trouvé, le résultat correspondant peut être renvoyé. Nous pouvons faire ceci:
<?php
$haystack = "Welcome to m66.net, the best place to learn PHP!";
$needles = ["m66.net", "PHP", "programming"];
foreach ($needles as $needle) {
$position = stripos($haystack, $needle);
if ($position !== false) {
echo "Found '$needle' at position $position\n";
} else {
echo "'$needle' not found\n";
}
}
?>
Le code ci-dessus vérifiera chaque mot-clé dans le tableau $ aiguilles à son tour et recherchera s'il y a une correspondance via stripos () . Si un mot-clé est trouvé, il diffuse des informations correspondantes.
Si vous souhaitez retourner les emplacements de tous les mots clés au lieu de trouver uniquement le premier match, vous pouvez stocker les emplacements de toutes les correspondances dans un tableau:
<?php
$haystack = "Welcome to m66.net, the best place to learn PHP! Check out m66.net for more.";
$needles = ["m66.net", "PHP"];
$matches = [];
foreach ($needles as $needle) {
$position = stripos($haystack, $needle);
while ($position !== false) {
$matches[] = ["keyword" => $needle, "position" => $position];
$position = stripos($haystack, $needle, $position + 1);
}
}
if (!empty($matches)) {
foreach ($matches as $match) {
echo "Found '{$match['keyword']}' at position {$match['position']}\n";
}
} else {
echo "No matches found";
}
?>
Dans le code ci-dessus, nous recherchons tous les mots clés qui apparaissent dans $ Haystack via While Loop. Chaque fois qu'une correspondance est trouvée, mettez à jour la position de recherche et continuez à rechercher le match suivant. Enfin, toutes les informations correspondantes sont stockées dans le tableau $ correspondant et tous les résultats correspondants sont sortis un par un.
Bien que Stripos () soit une fonction très pratique, il ne prend pas en charge les expressions régulières. Si vous avez besoin de correspondances plus complexes, comme ignorer certains caractères spéciaux ou utiliser la correspondance de motifs, preg_match () est un choix plus approprié. Voici un exemple de correspondance de plusieurs mots clés en utilisant des expressions régulières:
<?php
$haystack = "Welcome to m66.net, the best place to learn PHP!";
$needles = ["m66.net", "PHP"];
$pattern = '/(' . implode('|', $needles) . ')/i';
preg_match_all($pattern, $haystack, $matches, PREG_OFFSET_CAPTURE);
if (!empty($matches[0])) {
foreach ($matches[0] as $match) {
echo "Found '{$match[0]}' at position {$match[1]}\n";
}
} else {
echo "No matches found";
}
?>
Dans cet exemple, nous utilisons la fonction prég_match_all () de l'expression régulière pour faire correspondre plusieurs mots clés. Implode ('|', $ aigules) concatera tous les mots clés en une expression régulière, | signifie "ou", afin que plusieurs mots clés puissent être trouvés dans une correspondance en même temps. L'option preg_offset_capture renvoie l'emplacement spécifique correspondant.
Stripos () est une fonction très simple et efficace, mais il ne peut être utilisé que pour trouver un seul mot-clé. Si vous avez besoin de trouver plusieurs mots clés, il peut être réalisé via des boucles ou des expressions régulières. Les expressions régulières sont un outil puissant si vos besoins sont plus complexes ou nécessitent une correspondance de motifs plus flexible.
Grâce à la méthode ci-dessus, vous pouvez réaliser de manière flexible la recherche floue de plusieurs mots clés en PHP et choisir la solution la plus appropriée pour vos besoins, vous aidant à améliorer votre efficacité de travail.