PHP 8.6.0 Alpha 2 available for testing

ctype_print

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

ctype_printChequear posibles caracteres imprimibles

Descripción

function ctype_print(mixed $text): bool

verifica si todos los caracteres en la string entregada, text, son imprimibles.

Parámetros

text

La cadena de prueba.

Nota: Si se proporciona un int entre -128 y 255 inclusive, este se interpreta como el valor ASCII de un solo carácter (a los valores negativos se les añade 256 para permitir caracteres del rango ASCII extendido). Cualquier otro entero se interpreta como un string que contiene los dígitos decimales del entero.

Advertencia

A partir de PHP 8.1.0, pasar un argumento que no sea string está obsoleto. En el futuro, el argumento se interpretará como un string en lugar de un punto de código ASCII. Según el comportamiento deseado, el argumento debería convertirse a string o se debería realizar una llamada explícita a chr().

Valores devueltos

Devuelve true si cada caracter del texto genera realmente alguna salida (incluyendo los espacios). Devuelve false si el texto incluye caracteres de control o caracteres que no producen ninguna salida ni realizan función de control alguna después de todo. Cuando se llama con una cadena vacía, el resultado será siempre false.

Ejemplos

Ejemplo #1 Un ejemplo de ctype_print()

<?php
$cadenas = array('cadena1' => "asdf\n\r\t", 'cadena2' => 'arf12', 'cadena3' => 'LKA#@%.54');
foreach ($cadenas as $nombre => $caso_prueba) {
    if (ctype_print($caso_prueba)) {
        echo "La cadena '$nombre' consiste completamente de caracteres imprimibles.\n";
    } else {
        echo "La cadena '$nombre' no consiste completamente de caracteres imprimibles.\n";
    }
}
?>

El ejemplo anterior mostrará:

La cadena 'cadena1' no consiste completamente de caracteres imprimibles.
La cadena 'cadena2' consiste completamente de caracteres imprimibles.
La cadena 'cadena3' consiste completamente de caracteres imprimibles.

Véase también

  • ctype_cntrl() - Chequear posibles caracteres de control
  • ctype_graph() - Chequear posibles caracteres imprimibles, con excepción de los espacios
  • ctype_punct() - Chequear posibles caracteres imprimibles que no son ni espacios en blanco ni caracteres alfanuméricos
  • IntlChar::isprint() - Verifica si un punto de código es un carácter imprimible

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
14 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