Signatur
Beschreibung
ctype_upper() gibt true zurück, wenn jedes Zeichen im übergebenen String ein Großbuchstabe des ASCII-Alphabets (A–Z) ist. Ziffern, Leerzeichen, Sonderzeichen oder Kleinbuchstaben führen dazu, dass die Funktion false zurückgibt.
Die Funktion gehört zur ctype-Erweiterung und arbeitet ausschließlich mit dem ASCII-Zeichensatz. Umlaute wie Ä, Ö, Ü oder andere nicht-ASCII-Großbuchstaben werden nicht als Großbuchstaben erkannt – dafür müsste man auf mb_strtoupper() in Kombination mit Vergleichen oder reguläre Ausdrücke mit Unicode-Unterstützung zurückgreifen.
Typische Anwendungsfälle sind die Validierung von Eingaben wie Länderkürzeln (z. B. DE, US), Produktcodes, Kennzeichen oder sonstigen Bezeichnern, die ausschließlich Großbuchstaben enthalten dürfen.
Wichtig: Ein leerer String ('') gibt seit PHP 8.1 false zurück. In früheren PHP-Versionen konnte ein leerer String je nach Plattform true liefern.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $text Pflicht | string | Der zu prüfende String. Nur ASCII-Großbuchstaben (A–Z) führen zu einem Ergebnis von true. |
Rückgabewert
true zurück, wenn alle Zeichen im String Großbuchstaben (A–Z) sind, andernfalls false. Ein leerer String gibt false zurück.Beispiele
Einfache Prüfung auf Großbuchstaben
<?php
$tests = ['HELLO', 'Hello', 'HELLO WORLD', 'ABC123', 'DE', ''];
foreach ($tests as $t) {
$result = ctype_upper($t) ? 'true' : 'false';
echo var_export($t, true) . ' => ' . $result . "\n";
}
Validierung eines Ländercodes
<?php
function validateCountryCode(string $code): bool {
return strlen($code) === 2 && ctype_upper($code);
}
$codes = ['DE', 'de', 'US', 'U1', 'GBR', 'FR'];
foreach ($codes as $code) {
$valid = validateCountryCode($code) ? 'gültig' : 'ungültig';
echo "$code => $valid\n";
}
// Wichtig · Fallstricke
Achtung bei Nicht-ASCII-Zeichen: ctype_upper() erkennt ausschließlich die ASCII-Großbuchstaben A–Z. Großgeschriebene Umlaute wie Ä, Ö, Ü oder andere Unicode-Großbuchstaben werden als false gewertet. Für mehrsprachige Anwendungen sollte stattdessen preg_match('/^\p{Lu}+$/u', $text) verwendet werden.
Leerer String: Seit PHP 8.1 gibt ctype_upper('') konsistent false zurück. In älteren Versionen war das Verhalten bei leerem String plattformabhängig und konnte true liefern.