Hallo,
mir fiel ein seltsames Verhalten bei strtolower() auf.
$str = 'Der Schäfer hütet die Schafe';
$str = strtolower($str);
echo $str;
Daraus wird, obwohl alles UTF-8, dieses:
der sch�fer h�tet die schafe
Nun weiss ich zwar, dass strtolower keine Umlaute umwandeln kann, hatte aber erwartet, dass diese dann dennoch normal erscheinen.
Dennoch funktioniert eine Suche mit strpos() offensichtlich problemlos, sofern der Suchbergriff ebenso mit strtolower behandelt wird:
strpos($str, strtolower(Schäfer));
Also sch�fer findet sch�fer
.
Bisher ist mir das so nie aufgefallen, weil im normalen Gebrauch suche ich etwas im Text und lasse mir danach die Passage aus dem Originaltext anzeigen, wo dann die Hieroglyphen nicht auftauchen.
Nun stelle ich mir aber die Frage, wie schnell ich mir Probleme damit einhandeln könnte, denn vergesse ich das mal irgendwann an einer Stelle, also bspw. ich nehme den Suchtext und mache alles klein, das suchwort aber formatiere ich nicht, weil sowieso klein, dann habe ich keine Treffer. Wer weiss ob mir das nicht bisher schon irgendwo passiert ist. schäfer findet nicht sch�fer
.
Im Manual habe ich dann in den Kommentaren eine Funktion gefunden, die das ändert aber auch schon uralt ist und zudem den Nachteil hat, dass man auch alles damit konvertieren muss, wobei ich nicht mal getestet habe was passiert, wenn kein UTF-8 vorliegt. Na ja, dann fiel mir ein da war ja auch eine andere Möglichkeit, mb_strtolower().
Ich vermute mal, und das ist die eigentliche Frage hier, ich sollte immer diese anstatt strtolower() verwenden, oder gibt es Ausnahmen?
Denn normalerweise warnt das Manual plakativ doch vor veralteten/nicht_sinnvollen Sachen, daher der Gedanke es gibt vielleicht doch manchmal Gründe strtolower den Vorzug zu geben?
Und wenn das so ist, auch immer mit dem Argument UTF-8 mb_strtolower($str, 'UTF-8');
, oder spricht da was dagegen?
Gruss
Henry
Meine Meinung zu DSGVO & Co:
„Principiis obsta. Sero medicina parata, cum mala per longas convaluere moras.“