Start · Sprachen · PHP · Referenz · ctype_graph

ctype_graph

Funktion

Prüft, ob alle Zeichen in <code>$text</code> druckbare Zeichen sind, die kein Leerzeichen darstellen.

seit PHP 4.0.4 Kategorie: string

Signatur

ctype_graph(string $text): bool

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

Typ
bool
Beschreibung
Gibt 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;
}
'Hallo123' => true 'Hello World' => false 'P@ssw0rd!' => true 'Tab\there' => false '' => false '---' => true

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;
}
aB3!xZ9#kL2@mN8$: gültig aB3!xZ9# kL2@mN8$: ungültig kurzToken: ungültig

// 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.