ctype_print
(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)
ctype_print — 印字可能な文字かどうかを調べる
パラメータ
戻り値
text
のすべての文字が(空白を含めて)実際に
出力を行う場合に true
、text
に制御文字
またはまったく出力も制御も行わない文字が含まれる場合に false
を返します。
空文字列を渡して呼び出した場合、結果は常に 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 "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.
参考
- ctype_cntrl() - 制御文字かどうかを調べる
- ctype_graph() - 空白以外の印字可能な文字かどうかを調べる
- ctype_punct() - 空白、英数字以外の出力可能な文字かどうかを調べる
- IntlChar::isprint() - コードポイントが印字可能な文字かを調べる
+add a note
User Contributed Notes 4 notes
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
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.
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);
}
?>
↑ and ↓ to navigate •
Enter to select •
Esc to close
Press Enter without
selection to search using Google