CakeFest 2024: The Official CakePHP Conference

ctype_print

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

ctype_printПроверяет печатные символы

Описание

ctype_print(mixed $text): bool

Проверяет, состоит ли переданная строка (string) text только из печатных символов.

Список параметров

text

Проверяемая строка.

Замечание:

Если передано целое число (int) в диапазоне между -128 и 255 включительно, то оно будет обработано как ASCII-код одного символа (к отрицательным значениям будет прибавлено 256, чтобы функция могла представить символы из расширенного диапазона ASCII). Остальные целые числа будут обработаны как строки, содержащие десятичные цифры целых чисел.

Внимание

Начиная с PHP 8.1.0 передача нестроковых аргументов устарела. В будущем аргумент вместо ASCII-кода будет интерпретироваться как строка. В зависимости от предполагаемого поведения аргумент либо преобразовывают в строку (string), либо вызывают функцию chr().

Возвращаемые значения

Возвращает true, если каждый символ в строке text фактически создаёт вывод (включая пробелы). Возвращает false, если параметр text содержит управляющие символы, или символы, которые не имеют вывода или функции управления. При вызове с пустой строкой результатом всегда будет false.

Примеры

Пример #1 Пример использования функции 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
"Строка '$name' состоит только из печатных символов.\n";
} else {
echo
"Строка '$name' не состоит только из печатных символов.\n";
}
}
?>

Результат выполнения приведённого примера:

Строка 'string1' не состоит только из печатных символов.
Строка 'string2' состоит только из печатных символов.
Строка 'string3' состоит только из печатных символов.

Смотрите также

  • ctype_cntrl() - Проверяет управляющие символы
  • ctype_graph() - Проверяет любые печатные символы кроме пробела
  • ctype_punct() - Проверяет печатные символы, которые не содержат пробельных или буквенно-цифровых символов
  • IntlChar::isprint() - Проверяет, является ли символ отображаемым

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