Rolf B: PHP Multiarray aus Json-> Suchen und sicher finden (auch bei Fragmenten)

Beitrag lesen

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