Heim >Backend-Entwicklung >PHP-Tutorial >Warum kann „strpos() !== true' das Vorhandensein von Zeichenfolgen in PHP nicht erkennen?

Warum kann „strpos() !== true' das Vorhandensein von Zeichenfolgen in PHP nicht erkennen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-24 09:59:34171Durchsuche

Why Does `strpos() !== true` Fail to Detect String Presence in PHP?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn