CakeFest 2024: The Official CakePHP Conference

ctype_print

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

ctype_printPrüft auf druckbare Zeichen

Beschreibung

ctype_print(mixed $text): bool

Prüft, ob alle Zeichen in text druckbar sind.

Parameter-Liste

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.

Warnung

Seit PHP 8.1.0 ist die Übergabe eines Nicht-String-Arguments veraltet. In Zukunft wird das Argument statt als ASCII-Codepunkt als String interpretiert werden. Je nach beabsichtigtem Verhalten sollte das Argument entweder in String umgewandelt werden, oder es sollte ein expliziter Aufruf von chr() erfolgen.

Rückgabewerte

Gibt true zurück, wenn alle Zeichen in text tatsächtlich eine Ausgabe bewirken (inkl. Leerzeichen). Gibt false zurück, wenn text Steuerzeichen enthält oder Zeichen, die keine Ausgabe- oder Steuerungsfunktion haben. Bei einem Aufruf mit einer leeren Zeichenkette wird immer false zurückgegeben.

Beispiele

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.

Siehe auch

  • ctype_cntrl() - Prüft auf Steuerzeichen
  • ctype_graph() - Prüft auf druckbare Zeichen (außer Leerzeichen)
  • ctype_punct() - Prüft auf Sonderzeichen, d. h. auf druckbare Zeichen die weder Buchstaben noch Ziffern noch Leerzeichen sind.
  • IntlChar::isprint() - Check if code point is a printable character

add a note

User Contributed Notes 4 notes

up
4
ClayDragon
5 years ago
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
up
3
Anonymous
11 years ago
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.
up
2
harry at upmind dot com
2 years ago
You can use this function to detect if a string is "binary".

<?php
/**
* Determine whether the given value is a binary string by checking to see if it contains only printable characters.
*
* @param string $value
*
* @return bool
*/
function isBinary($value): bool
{
// remove "unprintable" whitespace characters (tabs, newlines etc)
$string = preg_replace('/\s/', '', (string)$value);

return !empty(
$string) && !ctype_print($string);
}
?>
up
0
Kalahiri
1 year ago
To check whether a string consists only of ASCII characters, use mb_detect_encoding( $string, 'ASCII', true );
To Top