Hallo NOOB,
suchst Du nach einer Alternative für eine Prüfung auf "Ist String A in String B enthalten"?
Mit strpos bekommst Du außer der Aussage "Ist enthalten" auch noch die Aussage "Findet sich an Position ...". Wenn Du das nicht brauchst, gibt's auch noch str_contains.
Beide Funktionen arbeiten
- case sensitive (also "schön" und "Schön" sind nicht gleich)
- byteweise und nicht zeichenweise. Da das Web heute mit Unicode funktioniert und Unicode-Strings UTF-8 codiert in PHP ankommen, führen die alten Funktionen, die byteweise operieren, ggf. in Probleme.
Prüfe deine Webseite. Wenn Du, wie es sein sollte, mit UTF-8 arbeitest, solltst Du die mb_-Stringfunktionen verwenden.
Für eine Suche, die case-insensitive arbeiten soll, gibt es stripos. Aber das fällt Dir schnell auf die Füße. Diese Funktion kommt mit Umlauten nicht klar. Und ein str_icontains gibt's gar nicht.
mb_stripos funktioniert dagegen korrekt mit Unicode und ist case-insensitive bei deutschen Umlauten
Dazu gibt mb_stripos("In Österreich war es schön", "schön") auch korrekt 21 aus, während strpos das Ö von Österreich als 2 Zeichen zählt (weil es in UTF-8 zwei Bytes sind).
Kompliziert? JA! Sorry. Zeichencodierung ist eine ganz spezielle Hölle für sich.
Rolf
sumpsi - posui - obstruxi