Heim > Backend-Entwicklung > PHP-Tutorial > Warum kann der Vergleich von „strpos()' mit „true' das Auftreten von Zeichenfolgen in PHP nicht erkennen?

Warum kann der Vergleich von „strpos()' mit „true' das Auftreten von Zeichenfolgen in PHP nicht erkennen?

Susan Sarandon
Freigeben: 2024-12-10 08:29:10
Original
338 Leute haben es durchsucht

Why Does Comparing `strpos()` to `true` Fail to Detect String Occurrences in PHP?

Falsche Interpretation des strikten Vergleichs von strpos() mit true

Beim Versuch festzustellen, ob eine Zeichenfolge ein unerwünschtes Element enthält, können Programmierer auf unerwartete Ergebnisse stoßen, wenn sie strpos() direkt verwenden Gleichstellungsvergleiche.

Bedenken Sie dies Szenario:

$link = 'https://google.com';
$unacceptables = ['https:','.doc','.pdf', '.jpg', '.jpeg', '.gif', '.bmp', '.png'];

foreach ($unacceptables as $unacceptable) {
    if (strpos($link, $unacceptable) === true) {
        echo 'Unacceptable Found<br />';
    } else {
        echo 'Acceptable!<br />';
    }
}
Nach dem Login kopieren

Interessanterweise gibt dieser Code „Akzeptabel!“ aus. für jedes Element in $inacceptables, obwohl https in $link vorhanden ist. Dieses scheinbar paradoxe Verhalten ergibt sich aus der Natur von strpos() selbst.

Ein Blick in die offizielle PHP-Dokumentation verdeutlicht den wahren Zweck der Funktion:

Gibt die numerische Position des ersten Vorkommens von Needle in zurück Heuhaufen-Zeichenfolge.

Wenn Sie also das Ergebnis von strpos() direkt mit true vergleichen, überprüfen Sie effektiv die Existenz von unerwünschtes Element in $link, nicht seine Gleichheit mit true.

Um dieses Problem zu beheben, besteht ein geeigneterer Ansatz darin, !== false in der if-Anweisung zu verwenden:

// ...
if (strpos($link, $unacceptable) !== false) {
Nach dem Login kopieren

Auf diese Weise So beurteilen Sie richtig, ob strpos() das Vorhandensein des unerwünschten Elements erkannt hat, was zum gewünschten Ergebnis führt.

Das obige ist der detaillierte Inhalt vonWarum kann der Vergleich von „strpos()' mit „true' das Auftreten von Zeichenfolgen in PHP nicht erkennen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage