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 之間(含)的 整數 (int),它會被解釋為單個字元的 ASCII 值(負值會加上 256,以便允許擴展 ASCII 範圍內的字元)。任何其他整數都會被解釋為包含該整數十進位數字的字串。

警告

從 PHP 8.1.0 開始,傳遞非字串參數已被棄用。未來,該參數將被解釋為字串,而不是 ASCII 字碼點。根據預期行為,應將參數強制轉換為 字串 (string) 或明確呼叫 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,但我在這個函式中遇到了一些不斷行空格的問題。

我為此添加了 2 個案例
case 0xC2
case 0xA0

經過修改後,我的測試程式碼中的不斷行空格已成功偵測。
To Top