Only ascii 32 thru 126 (inclusive) are considered printable. Tab (ascii 7), carriage return (ascii 13), linefeed (ascii 10) etc may produce output but are not considered printable.
(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)
ctype_print — Auf druckbare Zeichen überprüfen
Prüft ob jedes Zeichen in text
tatsächtlich eine Ausgabe bewirkt (inkl. Leerzeichen). Wenn
text
Steuerzeichen oder Zeichen, die keine
Ausgabe- oder Steuerungsfunktion haben, enthält, wird false
zurückgegeben.
text
Der zu prüfende String.
Hinweis:
Wenn ein int zwischen -128 und 255 (inklusive) übergeben wird, wird dieser als ASCII-Wert eines einzelnen Buchstabens interpretiert (zu negativen Werten wird 256 dazu addiert, um Buchstaben des erweiterten ASCII-Zeichensatzes zu erlauben). Alle anderen Integer werden wie eine Zeichenkette interpretiert, welche die dezimalen Ziffern des Integers enthält.
Liefert true
wenn alle Zeichen in text
druckbar sind, sonst false
.
Beispiel #1 ctype_print() Beispiel
<?php
$strings = array('string1' => "asdf\n\r\t", 'string2' => 'arf12', 'string3' => 'LKA#@%.54');
foreach ($strings as $name => $testcase) {
if (ctype_print($testcase)) {
echo "Der String '$name' besteht aus druckbaren Zeichen.\n";
} else {
echo "Der String '$name' enthält nicht nur druckbare Zeichen.\n";
}
}
?>
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
Der String 'string1' enthält nicht nur druckbare Zeichen. Der String 'string2' besteht aus printable druckbare Zeichen. Der String 'string3' besteht aus printable druckbare Zeichen.
Only ascii 32 thru 126 (inclusive) are considered printable. Tab (ascii 7), carriage return (ascii 13), linefeed (ascii 10) etc may produce output but are not considered printable.
As mentioned above, only ASCII characters from 32 to 126 are considered printable, all others, including UTF-8 encoded characters are always considered unprintable, no matter what your locale settings are. Therefore, e.g. German "ä", the Euro sign "€" or the British pound symbol "£" will never be printable. If you need to check any characters for "printability" beyond the standard ASCII range, use a regular expression or write a specific function yourself.
See also this discussion: https://grokbase.com/t/php/php-i18n/102tkqe6rk/ctype-print-returns-false-for-british-pound-symbol-and-non-ascii-symbols