Signatur
Beschreibung
ctype_graph() gehört zur ctype-Erweiterung und prüft, ob jedes Zeichen im übergebenen String ein sichtbares, druckbares Zeichen ist – also weder ein Leerzeichen, Tabulator, Zeilenumbruch noch ein anderes Whitespace-Zeichen. Dazu zählen Buchstaben, Ziffern und Sonderzeichen wie !, @, # usw.
Die Funktion ist besonders nützlich, wenn Benutzereingaben auf rein sichtbare Zeichenketten validiert werden sollen – zum Beispiel beim Prüfen von Passwörtern, Benutzernamen oder Token, die keine Steuer- oder Whitespace-Zeichen enthalten dürfen.
Im Vergleich zu ctype_print() schließt ctype_graph() das einfache Leerzeichen (' ') explizit aus. Beide Funktionen geben false zurück, wenn der übergebene String leer ist.
Hinweis: Ab PHP 8.1 akzeptiert die Funktion ausschließlich Strings; in älteren Versionen wurden Integer-Argumente als ASCII-Codepoints interpretiert, was zu unerwartetem Verhalten führen konnte.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $text Pflicht | string | Der zu prüfende String. Jedes Zeichen wird einzeln auf seine Zugehörigkeit zur Gruppe der sichtbaren, nicht-Whitespace-Zeichen überprüft. |
Rückgabewert
true zurück, wenn alle Zeichen in $text druckbare Nicht-Leerzeichen sind. Gibt false zurück, wenn der String leer ist oder mindestens ein Zeichen kein sichtbares Druckzeichen ist (z. B. Leerzeichen, Tabulator, Zeilenumbruch oder Steuerzeichen).Beispiele
Grundlegende Verwendung von ctype_graph
<?php
$tests = [
'Hallo123', // Buchstaben + Ziffern — kein Leerzeichen
'Hello World', // enthält Leerzeichen
'P@ssw0rd!', // Sonderzeichen — alle sichtbar
"Tab\there", // enthält Tabulator
'', // leerer String
'---', // nur Sonderzeichen
];
foreach ($tests as $str) {
$result = ctype_graph($str) ? 'true' : 'false';
echo var_export($str, true) . ' => ' . $result . PHP_EOL;
}
Validierung eines API-Tokens ohne Whitespace
<?php
function validateToken(string $token): bool {
// Token muss mindestens 16 Zeichen lang sein
// und darf keine Leerzeichen oder Steuerzeichen enthalten
if (strlen($token) < 16) {
return false;
}
return ctype_graph($token);
}
$tokens = [
'aB3!xZ9#kL2@mN8$', // gültiger Token
'aB3!xZ9# kL2@mN8$', // enthält Leerzeichen — ungültig
'kurzToken', // zu kurz — ungültig
];
foreach ($tokens as $token) {
echo $token . ': ' . (validateToken($token) ? 'gültig' : 'ungültig') . PHP_EOL;
}
// Wichtig · Fallstricke
Leerer String: ctype_graph('') gibt stets false zurück. Prüfen Sie daher ggf. vorher mit strlen(), ob der String überhaupt Inhalt hat.
Multibyte-Zeichen: ctype_graph() arbeitet byteweise und ist nicht für Multibyte-Encodings (UTF-8) geeignet. Umlaute oder andere Unicode-Zeichen außerhalb des ASCII-Bereichs führen zu false, da die Bytes ggf. außerhalb des gültigen Bereichs liegen.
Geändertes Verhalten ab PHP 8.1: Integer-Argumente wurden in älteren PHP-Versionen als ASCII-Codepoints behandelt. Ab PHP 8.1 löst ein nicht-string Argument einen TypeError aus.