PHP Conference Japan 2024

ctype_space

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

ctype_space检查空白字符

描述

ctype_space(混合 $text): 布尔值

检查提供的字符串 text中的所有字符是否构成空白。

参数

text

要测试的字符串。

注意:

如果提供了介于 -128 和 255(含)之间的整数,则将其解释为单个字符的 ASCII 值(负值会加上 256 以允许扩展 ASCII 范围内的字符)。任何其他整数都被解释为包含整数十进制数字的字符串。

警告

从 PHP 8.1.0 开始,传递非字符串参数已弃用。将来,该参数将被解释为字符串而不是 ASCII 代码点。根据预期行为,应将参数强制转换为字符串或显式调用chr()

返回值

如果 text 中的每个字符都产生某种空白,则返回 true,否则返回 false。除了空格字符外,这还包括制表符、垂直制表符、换行符、回车符和换页符。当使用空字符串调用时,结果将始终为 false

示例

示例 #1 ctype_space() 示例

<?php
$strings
= array(
'string1' => "\n\r\t",
'string2' => "\narf12",
'string3' => '\n\r\t' // 注意单引号
);
foreach (
$strings as $name => $testcase) {
if (
ctype_space($testcase)) {
echo
"字符串 '$name' 仅包含空白字符。\n";
} else {
echo
"字符串 '$name' 包含非空白字符。\n";
}
}
?>

以上示例将输出

The string 'string1' consists of whitespace characters only.
The string 'string2' contains non-whitespace characters.
The string 'string3' contains non-whitespace characters.

参见

添加注释

用户贡献的注释 2 个注释

gardnerjohng at hotmail dot com
15 年前
我昨晚编写的函数在检测空白方面相当灵活,甚至考虑了 Unicode 字母表中更靠前的令人讨厌的不间断空格/零宽空格。

此处的优点是能够根据其子范围隔离和识别特定的 Unicode 索引。

<?php
// 如果 $string 的 ASCII 值与已注册的空白字符匹配,则返回 TRUE。
// * 这包括不间断空格、零宽空格和任何低于 32 的 unicode 值。
// * $string:要识别的字符。如果字符串超过一个字符,则该值
// 被截断,并且仅检查初始字符。
function is_whitespace($string){
// 如果传递空字符串,则返回 FALSE。
if($string == "") return FALSE;

$char = ord($string);

// 控制字符
if($char < 33) return TRUE;
if(
$char > 8191 && $char < 8208) return TRUE;
if(
$char > 8231 && $char < 8240) return TRUE;

// 其他字符
switch($char){
case
160: // 不间断空格
case 8287: // 中等数学空格
return TRUE;
break;
}
return
FALSE;
}
?>
vlabots at gmail dot com
10 年前
感谢 gardnerjohng,但我在此函数中遇到了一些不间断空格的问题。

我为此添加了另外两个情况
case 0xC2
case 0xA0

修改后,我的测试代码中的不间断空格已成功检测到。
To Top