PHP 8.4.1 Released!

ctype_print

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

ctype_printCheck for printable character(s)

Опис

ctype_print(mixed $text): bool

Checks if all of the characters in the provided string, text, are printable.

Параметри

text

The tested string.

Зауваження:

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

Увага

Починаючи з PHP 8.1.0, параметр, що не є рядком — застарів. У майбутньому параметр вважатиметься виключно рядком, а не кодом символу з ASCII. Залежно від наміченої поведінки, параметр буде або приведено до string, або явно опрацьовано функцією chr().

Значення, що повертаються

Returns true if every character in text will actually create output (including blanks). Returns false if text contains control characters or characters that do not have any output or control function at all. Якщо викликано з порожнім рядком — результатом буде false.

Приклади

Приклад #1 A ctype_print() example

<?php
$strings
= array('string1' => "asdf\n\r\t", 'string2' => 'arf12', 'string3' => 'LKA#@%.54');
foreach (
$strings as $name => $testcase) {
if (
ctype_print($testcase)) {
echo
"The string '$name' consists of all printable characters.\n";
} else {
echo
"The string '$name' does not consist of all printable characters.\n";
}
}
?>

Поданий вище приклад виведе:

The string 'string1' does not consist of all printable characters.
The string 'string2' consists of all printable characters.
The string 'string3' consists of all printable characters.

Прогляньте також

add a note

User Contributed Notes 4 notes

up
5
ClayDragon
6 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
12 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
3 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