Hallo pianist87 und
Das Problem an deinem Code ist die Abfrage mit dem Vergleichsoperator != (ungleich). Wenn du stattdessen den Operator !== verwendest, dann erhältst du das gewünschte Ergebnis.
$text = "Hallo Hans";
if (strpos($text, "Hallo") !== false) { // zu beachten ist der Operator !==
echo "Hallo gefunden<br>";
}
Zur Erklärung: Die Funktion strpos()
gibt die Position der zu suchenden Zeichenkette (2. Parameter) in der zu durchsuchenden Zeichenkette (1. Parameter) zurück. In deinem Beispiel oben steht das Wort "Hallo" ganz am Anfang der Zeichenkette. Somit gibt die Funktion den Zahlenwert 0 zurück. Wird nichts gefunden, so gibt die Funktion false
zurück.
Bei einem Vergleich mit dem Operator != oder auch == wird nur der Wert verglichen. Dabei führt PHP ggf. vorher eine Typkonveriterung durch. In deinem Beispiel wird also der Integer-Wert 0 in den boolschen Wert false konvertiert. Dadurch ergibt sich dann die Abfrage false != false
welche natürlich nicht zutrifft und du keine Ausgabe bekommst.
Bei PHP (und auch einigen weiteren Sprachen wie JavaScript) ist es daher wichtig, bei Vergleichen immer aufzupassen, ob der Typ oder nur der Wert bei dem Vergleich relevant ist.
Das ist zwar, vor allem wenn man von anderen Programmiersprachen wie C oder C++ kommt, am Anfang etwas gewöhnungsbedürftig, aber man gewöhnt sich daran.
P.S.: Weitere Informationen hierzu findest du hier.