Der Vorschlag von Dietmar es mit CSS Transform zu lösen ist eine gute Idee. Aber dein Problem mit den Umlauten liegt nicht in der strtoupper Funktion von PHP.
Ich habe diese Funktion schon an verdammt vielen Stellen eingesetzt und nie ein Problem mit Umlauten gehabt.
Schau dir mal lieber deine Kodierungen an (ANSI, UTF-8, etc). Da entstehen gerne mal solche Probleme.
Beispiel:
$str = "allgemeiner Überblick";
echo $str."
";
echo strtoupper($str);
Wird dies in einer (ANSI Datei) ISO-8859-1 gespeichert, ist die Ausgabe korrekt.
Speicherst du die Datei als UTF-8 (mit oder ohne BOM (ByteOrderMask)) ab, so erhält man die im Web oft bekannten Kodierungsfehler bei Umlauten. Es ist sowieso immer eine gute Idee in PHP einen speziellen Header an den Browser/Client zu senden und diesem mitzuteilen, welche Kodierung man einsetzt.