Heim >Backend-Entwicklung >PHP-Tutorial >Warum kann „strpos() !== true' das Vorhandensein von Zeichenfolgen in PHP nicht erkennen?
Numerische Vergleiche in strpos() verstehen
Bei der Durchführung strenger Gleichheitsvergleiche mit der Funktion strpos() in PHP kann es zu unerwarteten Ergebnissen kommen . In diesem Artikel wird untersucht, warum der Vergleich von strpos() mit true zum gegenteiligen beabsichtigten Ergebnis führen kann.
Im bereitgestellten Code vergleicht die if-Anweisung das Ergebnis von strpos($link, $inacceptable) mit true. Dieser Vergleich erfüllt jedoch nicht den beabsichtigten Zweck, das Vorhandensein einer unerwünschten Zeichenfolge in $link zu erkennen.
Um zu verstehen, warum dies geschieht, müssen wir auf die Dokumentation zu strpos() verweisen. Laut Dokumentation gibt strpos() die numerische Position des ersten Vorkommens der gesuchten Zeichenfolge innerhalb der Betreffzeichenfolge zurück. Wenn jedoch kein Vorkommen gefunden wird, wird „false“ zurückgegeben.
Im Codeausschnitt prüft die if-Anweisung, ob strpos() „true“ zurückgibt. Da strpos() eine Zahl (0 oder größer) zurückgibt, wenn eine Übereinstimmung gefunden wird, und „false“, wenn keine Übereinstimmung vorliegt, wird die Anweisung immer als „false“ ausgewertet, wenn eine Übereinstimmung gefunden wird. Dies liegt daran, dass true in einem strikten Gleichheitsvergleich als ungültige Zahl betrachtet wird.
Um dieses Problem zu beheben, müssen wir den Vergleichsoperator in !== false ändern, der prüft, ob das Ergebnis von strpos() nicht stimmt false (d. h. es wurde eine Übereinstimmung gefunden):
// ... if (strpos($link, $unacceptable) !== false) { echo 'Unacceptable Found<br />'; } else { echo 'Acceptable!<br />'; } // ...
Durch die Verwendung dieses Vergleichs erkennt der Code korrekt, wann eine der inakzeptablen Zeichenfolgen in der $link-Variablen vorhanden ist, und gibt die aus entsprechende Nachricht.
Das obige ist der detaillierte Inhalt vonWarum kann „strpos() !== true' das Vorhandensein von Zeichenfolgen in PHP nicht erkennen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!