Bei der Entwicklung von Webanwendungen müssen wir häufig eine große Datenmenge suchen. Für gewöhnliche genaue Übereinstimmungen können Strpos oder andere String -Funktionen verwendet werden. Wenn wir jedoch Fuzzy -Suchanfragen durchführen müssen, bietet PHP eine sehr praktische Funktion - Stripos . Diese Funktion ermöglicht es uns, den Ort eines Substrings in einer Zeichenfolge zu ermitteln, und ist bei der Suche von Fall unempfindlich.
Die Stripos -Funktion wird verwendet, um zu finden, wo eine Zeichenfolge (Substring) zuerst in einer anderen Zeichenfolge erscheint. Im Gegensatz zur STRPOS -Funktion ignoriert Strpos den Fall bei der Suche. Dies bedeutet, dass Stripos die Übereinstimmung korrekt finden kann, unabhängig davon, ob die Zielzeichenfolge im Groß- oder Kleinbuchstaben ist.
stripos(string $haystack, string $needle, int $offset = 0): int|false
Haystack : Die Zielzeichenfolge, nach der Sie suchen müssen.
Nadel : Das Substring zu finden.
Offset (optional): Starten Sie die Suche von Wo in der Zielzeichenfolge, die Standardeinstellung ist 0 (starten Sie von vorne).
Wenn eine Übereinstimmung gefunden wird, gibt Stripos die Startposition (Indexposition) des passenden Substrings zurück und falls nicht gefunden, falsch .
Angenommen, wir haben eine Datenbank, in der E -Mail -Adressen für mehrere Benutzer gespeichert werden. Wir hoffen, dass wenn ein Benutzer ein Suchschlüsselwort eingibt, alle E -Mail -Adressen im Zusammenhang mit dem Keyword über Fuzzy -Matching gefunden werden können.
Hier ist ein einfaches PHP -Beispiel, das zeigt, wie die Fuzzy -Suche mit Stripos implementiert wird:
<?php
// Suchschlüsselwörter, die von Benutzern eingegeben wurden
$searchKeyword = "example";
// Angenommen, es gibt eine Reihe von E -Mail -Adressen
$emailList = [
"user1@m66.net",
"user2@m66.net",
"contact@m66.net",
"admin@example.com",
"test@example.com"
];
// Speichern Sie die passenden Ergebnisse
$matchingEmails = [];
// Durch das E -Mail -Adress -Array iterieren,Führen Sie eine Fuzzy -Suche durch
foreach ($emailList as $email) {
if (stripos($email, $searchKeyword) !== false) {
$matchingEmails[] = $email;
}
}
// Ausgangsübereinstimmende Ergebnisse
echo "Matchierte E -Mail -Adresse:\n";
foreach ($matchingEmails as $email) {
echo $email . "\n";
}
?>
Wir definieren ein Search -Keyword $ SearchKeyword und gehen davon aus, dass wir eine Reihe von E -Mail -Adressen $ Emaillist haben.
Verwenden Sie, um jede E -Mail -Adresse zu iterieren und Stripos für Fuzzy -Matching anzurufen. Wenn ein Match gefunden wird, wird die E -Mail -Adresse dem $ matchingemails -Array hinzugefügt.
Schließlich drucken wir alle passenden E -Mail -Adressen aus.
Im obigen Beispiel ignoriert Stripos den Fall und kann effektiv E -Mail -Adressen mit Schlüsselwörtern finden.
Die Stripos -Funktion ist für viele Fuzzy -Suchszenarien geeignet. Zu den allgemeinen Anwendungen gehören:
Suchmaschinen : Suchen Sie Dokumente, Inhalte oder Datensätze, die die von den Benutzern eingegebenen Schlüsselwörter enthalten.
Protokollanalyse : Finden Sie bestimmte Schlüsselwörter oder Fehlermeldungen in einer großen Anzahl von Protokolldateien.
Inhaltsfilterung : Filtern Sie unnötige Inhalte heraus oder führen Sie die Inhaltsüberprüfung basierend auf bestimmten Schlüsselwörtern durch.
Leistungsprobleme : Obwohl die SCRIPOS -Funktion sehr bequem ist, kann der Datenvolumen die Leistung beeinflussen, wenn das Datenvolumen sehr groß ist. Erwägen Sie, die Volltextfunktion oder die Caching-Technologie der Datenbank zu verwenden, um die Effizienz zu verbessern.
Matching-Methode : Stripos ist von Fall unempfindlich, aber wenn Sie Fallempfindlichkeit sein müssen, können Sie die STRPOS -Funktion verwenden.
Match -Position : Stripos gibt die Startposition des Spiels zurück. Wenn Sie detailliertere Übereinstimmungsinformationen erhalten müssen, können Sie sie in Kombination mit anderen Funktionen verwenden.