PHP lcfirst: Umlaute werden nicht beachtet

xep22

Banned
Registriert
Apr. 2018
Beiträge
395
Moin folgendes Problem ist mir aufgefallen:

PHP:
$wort = 'Überragend';
echo lcfirst($wort);

damit erhalte ich

Überragend

. Es ändert sich nichts. Es liegt am Ü. Umlaute werden bei lcfirst nicht beachtet. was kann ich dagegen tun ? Hab nix gefunden bei Google auch wenn die Suche nach Umlaute direkt vervollständigt wird.
 
Hi,

Beachten Sie, dass die möglichen "Buchstaben" von der aktuellen locale-Einstellung bestimmt werden. Ist diese zum Beispiel "C", werden Zeichen wie ein Ä nicht konvertiert.

steht doch in den Docs?!

VG,
Mad
 
  • Gefällt mir
Reaktionen: bog, Andreas_ und abcddcba
  • Gefällt mir
Reaktionen: GroMag
User007 schrieb:
Hi...


Kann ich ja gar nicht glauben...


Benutz' einfach strtolower() > guckst Du hier 😉

Ja nur das strtolower genauso von locale abhängig ist wie lcfirst. Und ehrlich gesagt hab ich auf noch keinem Server erlebt dass das funktioniert hätte ohne Fummelei.

Und dann noch dieses Highlight:

Warnung
Die Locale-Informationen wirken auf den Prozess, nicht auf den Thread. Sofern Sie PHP mit einer Multithreaded Server API wie IIS, HHVM oder Apache unter Windows einsetzen, rechnen Sie mit unerwarteten Änderungen der Locale-Einstellungen zur Laufzeit des Skripts, auch wenn das Skript selbst keinen setlocale()-Aufruf durchführt. Dies passiert, da andere Skripte in verschiedenen Threads des selben Prozesses zur selben Zeit prozessweit die Locale-Einstellungen mittels setlocale() ändern.

Also kurz: ne ist nicht so easy wie ihr das glauben machen mögt, zumindest wenn einem der Server nicht gehört.

@TE: str_replace(array('Ü'), array('ü'), $deinstring); restliche Umlaute per komma ergänzen, packste inne Helferfunktion und machst noch strtolower drauf. Ist fies aber läuft zumindest. Und warte mal bis du ksort auf ein array machst wenn da Umlaute drin sind, behalts im Hinterkopf, da musst du extra Sortierparameter mitgeben dass das funzt!
 
Zurück
Oben