In PHP wird die Funktion stripos () verwendet, um zu ermitteln, wo eine Zeichenfolge zuerst in einer anderen Zeichenfolge erscheint (Fall unempfindlich). Diese Funktion wird häufig bei der Verarbeitung von String-bezogenen Logik verwendet, z. B. festzustellen, ob ein Schlüsselwort in einem bestimmten Inhalt vorhanden ist.
Aufgrund des von Stripos () charakteristischen Rückgabwerts () sind viele Entwickler jedoch anfällig für Stolpern bei Urteilen, insbesondere bei der Verarbeitung des Rückgabewerts von 0 . In diesem Artikel wird dieses Problem detailliert analysiert und eine korrekte Beurteilungsmethode geben.
$haystack = "Welcome to m66.net!";
$needle = "welcome";
$pos = stripos($haystack, $needle);
Im obigen Beispiel wird Stripos () 0 zurückkehren, da "Willkommen" am Anfang der Zielzeichenfolge angezeigt wird (obwohl der Fall unterschiedlich ist, ist Stripos () nicht unterempfindlich).
Viele Anfänger werden so schreiben:
if (stripos($haystack, $needle)) {
echo "Fand das Schlüsselwort";
} else {
echo "Schlüsselwörter existieren nicht";
}
Das Problem mit diesem Code ist, dass , wenn das Schlüsselwort am Anfang der Zeichenfolge angezeigt wird (Position ist 0), wenn das Urteil 0 als falsch behandelt wird und der sonstige Zweig falsch ausgeführt wird .
$pos = stripos($haystack, $needle);
if ($pos !== false) {
echo "Fand das Schlüsselwort,Ort ist:$pos";
} else {
echo "Schlüsselwörter existieren nicht";
}
Die Verwendung der Schreibmethode, die gleich ( ! == false ) ist, kann genau unterscheiden, ob die Funktion 0 oder false zurückgibt, wodurch logische Fehler vermieden werden.
Zum Beispiel möchten wir feststellen, ob die von einem Benutzer eingereichten Kommentare bestimmte sensible Wörter enthalten und eine Erinnerung geben: