In PHP wird die Funktion stripos () verwendet, um zu ermitteln, wo eine Zeichenfolge zuerst in einer anderen Zeichenfolge erscheint und Falls unempfindlich ist. Wenn Sie die Fuzzy -Suche nach mehreren Schlüsselwörtern in PHP implementieren möchten, wie geht es mit der Übereinstimmung mehrerer Schlüsselwörter um? Dieses Problem ist etwas kompliziert, da Stripos () selbst nicht die gleichzeitige Übereinstimmung mehrerer Schlüsselwörter gleichzeitig unterstützt, sondern nur die Suche nach einzelnen Schlüsselwörtern unterstützt.
Lassen Sie uns zunächst die grundlegende Verwendung von Stripos () verstehen:
<?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";
}
?>
Im obigen Code verwenden wir Stripos () , um die $ nadel in der Zeichenfolge $ haystack zu finden und ihre Position zurückzugeben. Wenn die Übereinstimmung erfolgreich ist, wird die Startposition des Schlüsselworts in der Zeichenfolge zurückgegeben. Wenn keine Übereinstimmung erreicht ist, gibt es falsche zurück.
Um die Fuzzy -Suche nach mehreren Schlüsselwörtern zu erreichen, besteht der einfachste Weg, dies zu tun , um jedes Schlüsselwort zu verwenden. Wenn eines der Schlüsselwörter gefunden wird, kann das Matching -Ergebnis zurückgegeben werden. Wir können das tun:
<?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";
}
}
?>
Der obige Code überprüft jedes Schlüsselwort im Array $ -Nezieren und sucht nach einer Übereinstimmung über Stripos () . Wenn ein Schlüsselwort gefunden wird, gibt es übereinstimmende Informationen aus.
Wenn Sie die Standorte aller Schlüsselwörter zurückgeben möchten, anstatt nur das erste Spiel zu finden, können Sie die Standorte aller Übereinstimmungen in einem Array speichern:
<?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";
}
?>
Im obigen Code suchen wir nach allen Schlüsselwörtern, die in $ haystack durch die Schleife erscheinen. Jedes Mal, wenn eine Übereinstimmung gefunden wird, aktualisieren Sie die Suchposition und suchen Sie weiter nach dem nächsten Spiel. Schließlich werden alle übereinstimmenden Informationen im $ Matches -Array gespeichert und alle Übereinstimmungsergebnisse werden nacheinander ausgegeben.
Obwohl Stripos () eine sehr praktische Funktion ist, unterstützt es keine regulären Ausdrücke. Wenn Sie komplexere Übereinstimmungen benötigen, z. B. das Ignorieren bestimmter Sonderzeichen oder die Verwendung von Muster -Matching, ist preg_match () eine geeignetere Wahl. Hier ist ein Beispiel für die Übereinstimmung mehrerer Schlüsselwörter mit regulären Ausdrücken:
<?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";
}
?>
In diesem Beispiel verwenden wir die Funktion des regulären Ausdrucks preg_match_all (), um mehrere Schlüsselwörter zu entsprechen. Implode ('|', $ nadles) verkettet alle Schlüsselwörter zu einem regulären Ausdruck, | bedeutet "oder", damit mehrere Schlüsselwörter gleichzeitig in einer Übereinstimmung gefunden werden können. Die Option PRG_OFFSET_CAPTURE gibt den passenden spezifischen Speicherort zurück.
Stripos () ist eine sehr einfache und effiziente Funktion, kann jedoch nur ein einzelnes Schlüsselwort finden. Wenn Sie mehrere Schlüsselwörter finden müssen, kann dies durch Schleifen oder reguläre Ausdrücke erreicht werden. Regelmäßige Ausdrücke sind ein leistungsstarkes Werkzeug, wenn Ihre Anforderungen komplexer sind oder flexiblere Musteranpassungen erfordern.
Mit der obigen Methode können Sie die Fuzzy -Suche nach mehreren Schlüsselwörtern in PHP flexibel erkennen und die am besten geeignete Lösung für Ihre Anforderungen auswählen, wodurch Sie Ihre Arbeitseffizienz verbessern können.