我昨晚寫的一個函式在偵測空白方面相當靈活,甚至考慮到了 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;
}
?>