Signatur
Beschreibung
ctype_print() gibt true zurück, wenn jedes Zeichen des übergebenen Strings ein druckbares Zeichen gemäß dem C-Zeichensatz ist. Als druckbar gelten alle ASCII-Zeichen von 32 (Leerzeichen) bis 126 (Tilde ~), also alle sichtbaren Zeichen sowie das Leerzeichen.
Steuerzeichen wie Zeilenumbruch (\n), Tabulator (\t) oder sonstige Nicht-Druckbare (ASCII 0–31 sowie 127 und höher) führen dazu, dass die Funktion false zurückgibt. Diese Funktion ist daher nützlich, wenn sichergestellt werden soll, dass ein String keine unsichtbaren oder binären Zeichen enthält.
Typische Einsatzgebiete sind die Validierung von Benutzereingaben, die Überprüfung von Dateinamen oder die Prüfung von Protokoll-Zeichenketten, die ausschließlich aus druckbaren ASCII-Zeichen bestehen dürfen.
Die Funktion gehört zur ctype-Erweiterung. Ab PHP 8.1 erzeugen Nicht-String-Argumente eine Deprecation-Warnung; in früheren Versionen wurden Integer-Werte als ASCII-Codes interpretiert.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $text Pflicht | string | Der zu prüfende String. Alle Zeichen müssen druckbare ASCII-Zeichen (Codes 32–126) sein, damit true zurückgegeben wird. Ein leerer String gibt false zurück. |
Rückgabewert
true zurück, wenn alle Zeichen in $text druckbare Zeichen (ASCII 32–126) sind. Gibt false zurück, wenn der String leer ist oder mindestens ein nicht druckbares Zeichen enthält.Beispiele
Einfache Prüfung auf druckbare Zeichen
<?php
$strings = [
'Hallo Welt!', // enthält Buchstaben, Leerzeichen, Ausrufezeichen
"Zeile1\nZeile2", // enthält einen Zeilenumbruch (nicht druckbar)
'PHP 8.4', // alphanumerisch mit Leerzeichen und Punkt
"\t\tEingerückt", // beginnt mit Tabulatoren
'', // leerer String
];
foreach ($strings as $str) {
$result = ctype_print($str) ? 'ja' : 'nein';
echo var_export($str, true) . " => druckbar: $result\n";
}
Validierung eines Benutzer-Inputs (z. B. Kommentarfeld)
<?php
function validiereKommentar(string $eingabe): bool {
// Erlaubt nur druckbare ASCII-Zeichen (keine Steuerzeichen, kein Binäres)
return ctype_print($eingabe);
}
$testEingaben = [
'Das ist ein normaler Kommentar.',
"Kommentar mit\x00Null-Byte",
'Sonderzeichen: !@#$%^&*()-_=+[]{}|;:\',.<>?/`~',
];
foreach ($testEingaben as $eingabe) {
if (validiereKommentar($eingabe)) {
echo "Gültig: " . htmlspecialchars($eingabe) . "\n";
} else {
echo "Ungültig: Enthält nicht druckbare Zeichen.\n";
}
}
// Wichtig · Fallstricke
Leerer String: Ein leerer String '' gibt immer false zurück. Dies sollte bei der Eingabevalidierung berücksichtigt werden.
Kein Unicode: ctype_print() arbeitet ausschließlich mit dem ASCII-Zeichensatz. Multibyte-Zeichen (z. B. Umlaute wie ä, ö, ü oder Emoji) haben Bytewerte über 127 und führen daher zu false. Für Unicode-Validierungen sollte stattdessen preg_match() mit einem entsprechenden Pattern verwendet werden.
Deprecated seit PHP 8.1: Die frühere Möglichkeit, einen Integer als ASCII-Code zu übergeben (z. B. ctype_print(65)), ist seit PHP 8.1 als veraltet markiert und sollte nicht mehr verwendet werden. Ab PHP 9.0 wird dies voraussichtlich entfernt.
Leerzeichen ist druckbar: Das reguläre Leerzeichen (ASCII 32) gilt als druckbar und wird akzeptiert. Andere Whitespace-Zeichen wie Tabulator oder Zeilenumbruch hingegen nicht.