In PHP ist Stripos () eine sehr häufige Funktion, um das erste Auftreten einer String in einer anderen Zeichenfolge unempfindlich zu finden. Wenn gefunden, gibt Stripos () eine Ganzzahl zurück, die die Startposition der Matching -Zeichenfolge in der Zielzeichenfolge angibt. Wenn nicht gefunden, wird Falsch zurückgegeben.
Hier kommt das Problem: Da die Rückgabe " 0 oder falsch " ist, ist es einfach, Fehler im bedingten Urteil zu machen.
Lassen Sie mich Ihnen eine gemeinsame Gefahr geben:
if (stripos($haystack, $needle)) {
echo "Gefunden!";
} else {
echo "Nicht gefunden!";
}
Wenn $ nadel am Anfang von $ haystack (Position 0) liegt, gibt Stripos () 0 zurück, und wenn (0) als falsch behandelt wird, was zu einer "Nicht gefundenen" Ausgabe, logischem Fehler führt!
Um die Situation, in der Stripos () false zurückgibt, anmutig zu bewältigen, sollten wir klar bestimmen, ob es falsch ist, und nicht ein einfaches booleanes Urteil:
$pos = stripos($haystack, $needle);
if ($pos !== false) {
echo "Gefunden,In der Lage:$pos";
} else {
echo "Nicht gefunden!";
}
Durch die Verwendung des kongruenten Vergleichssymbols ! == können wir 0 und false genau unterscheiden.
Um den Code klarer und wiederverwendbar zu machen, können wir eine Helferfunktion zusammenschließen:
function containsIgnoreCase($haystack, $needle) {
return stripos($haystack, $needle) !== false;
}
// Beispiel für die Nutzung
if (containsIgnoreCase("https://m66.net/news", "NEWS")) {
echo "Schlüsselwörter eingeben!";
} else {
echo "不Schlüsselwörter eingeben!";
}
Auf diese Weise ist das Schreiben von Code einfach zu lesen und reduziert sich wiederholte Logik, was ihn für die weit verbreitete Verwendung in Projekten sehr geeignet ist.
Nehmen wir an, wir müssen feststellen, ob die URL der Benutzerzugriff utm_source enthält: