ctype_print

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

ctype_printVérifie qu'une chaîne est imprimable

Description

ctype_print(mixed $text): bool

ctype_print() vérifie si tous les caractères de la chaîne text sont imprimables (y compris les espaces).

Liste de paramètres

text

La chaîne testée.

Note:

Si un entier dans l'intervalle -128 et 255 inclus est fourni, il sera interprété comme la valeur ASCII d'un seul caractère (les valeurs négatives se verront ajouter 256 afin d'autoriser les caractères dans l'intervalle ASCII étendue). Tout autre entier sera interprété comme une chaîne de caractères contenant les décimales de l'entier.

Avertissement

À partir de PHP 8.1.0, passer un argument différent d'une chaîne est obsolète. À l'avenir, l#39;argument sera interprété comme une chaîne de caractères au lieu d'un point de code ASCII. Selon le comportement souhaité, l'argument doit être transtypé en chaîne de caractères ou un appel explicite à chr() doit être effectué.

Valeurs de retour

Retourne true si tous les caractères de text sont imprimables (y compris les espaces). Retourne false si text contient des caractères de contrôle ou des caractères qui ne s'afficheront pas ou n'ont pas de fonction de contrôle. Lorsque appelé avec une chaîne vide, le résultat sera toujours false.

Exemples

Exemple #1 Exemple avec ctype_print()

<?php
$strings
= array('string1' => "asdf\n\r\t", 'string2' => 'arf12', 'string3' => 'LKA#@%.54');
foreach (
$strings as $name => $testcase) {
if (
ctype_print($testcase)) {
echo
"La chaîne '$name' ne contient que des caractères imprimables.\n";
} else {
echo
"La chaîne '$name' ne contient pas que des caractères imprimables.\n";
}
}
?>

L'exemple ci-dessus va afficher :

La chaîne 'string1' ne contient pas que des caractères imprimables.
La chaîne 'string2' ne contient que des caractères imprimables.
La chaîne 'string3' ne contient que des caractères imprimables.

Voir aussi

  • ctype_cntrl() - Vérifie qu'un caractère est un caractère de contrôle
  • ctype_graph() - Vérifie qu'une chaîne contient des caractères imprimables sauf l'espace
  • ctype_punct() - Vérifie qu'une chaîne contient de la ponctuation
  • IntlChar::isprint() - Vérifie si un point de code est un caractère affichable

add a note

User Contributed Notes 4 notes

up
5
ClayDragon
7 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
13 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
4 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
3 years ago
To check whether a string consists only of ASCII characters, use mb_detect_encoding( $string, 'ASCII', true );
To Top