Das Problem ist wesentlich komplexer und wie immer solltest Du dazu die Doku nachlesen:
http://de.php.net/manual/de/function.strtoupper.php bzw.
http://de.php.net/manual/de/function.strtolower.php
Damit diese Funktion überhaupt Buchstaben "erkennt" (was für Dich im Editor anscheinend selbstverständlich ist, ist für ein PHP Script und eine Funktion darin keinesfalls selbstverständlich, denn Buchstaben und Ziffern sind intern nur Bitmuster) und die entsprechenden Gross-Klein-Konvertierungen durchführen kann, muss sie wissen, welcher Zeichensatz auf dem System eingestellt ist.
Dazu benutzt PHP (und diese Stringfunktionen) den Wert aus der sog. "locale" Einstellung. Diese Einstellung kann mit der Funktion setlocale() gesetzt werden, siehe
http://de.php.net/manual/de/function.setlocale.php
Das ganze ist ein ziemlich komplexes Thema, weswegen es speziell bei Umlauten immer wieder zur Problemen kommt, weil das Zusammenspiel zwischen
benutztem Zeichensatz (das ist hier der Zeichensatz, den Du im Editor angegeben hast) und
eingestelltem nicht richtig konfiguriert ist.
Wenn die locale-Einstellung exakt übereinstimmt mit den Zeichensatzeinstellungen im Editor
und mit dem gewählten Zeichensatz im HTML-Dokument (wird über META-TAG gesteuert), dann funktioniert auch die Darstellung der deutschen Umlaute richtig. Offensichtlich ist das bei Dir nicht der Fall.
Xardas der Dunkle wrote:Logisch. PHP ist dafür gedacht Webseiten zu erzeugen, diese werden standardmäßig im Zeichensatz ISO-8859-1 ausgeliefert, d.h. Deutsche Umlaute z.B. existieren nicht.
Sorry, aber das ist doppelt falsch. Erstens ist auch bei PHP der Zeichensatz frei wählbar, und zweitens sind selbstverständlich im Zeichensatz ISO-8859-1 (Westeuropäisch bzw Latin-1) auch die deutschen Umlaute enthalten. Beispielsweise entspricht das kleine 'ä' dem Hexwert 0xe4. Eine vollständige Darstellung des Zeichensatzes ISO-8859-1 findest Du u.a. auf
http://de.wikipedia.org/wiki/ISO_8859-1
Das Problem liegt (wie o.g.) am Zusammenspiel mit der Einstellung der "locale".