A function I wrote last night was fairly flexible in terms of detecting whitespace, and even took into account the pesky non-breaking spaces / zero-width spaces further up the Unicode alphabet.
The benefit here was being able to isolate and identify specific Unicode indices based on their subrange.
<?php
// Returns TRUE if the ASCII value of $string matches a registered whitespace character.
// * This includes non-breaking spaces, zero-width spaces, and any unicode values below 32.
// * $string: Character to identify. If string extends past one character, the value
// is truncated and only the initial character is examined.
function is_whitespace($string){
// Return FALSE if passed an empty string.
if($string == "") return FALSE;
$char = ord($string);
// Control Characters
if($char < 33) return TRUE;
if($char > 8191 && $char < 8208) return TRUE;
if($char > 8231 && $char < 8240) return TRUE;
// Additional Characters
switch($char){
case 160: // Non-Breaking Space
case 8287: // Medium Mathematical Space
return TRUE;
break;
}
return FALSE;
}
?>
ctype_space
(PHP 4 >= 4.0.4, PHP 5)
ctype_space — 空白文字かどうか調べる
説明
bool ctype_space
( string
$text
)
与えられた文字列 text のすべての文字が
空白文字であるかどうかを調べます。
パラメータ
-
text -
調べる文字列。
返り値
text のすべての文字がなんらかの空白文字を
生成する場合に TRUE 、そうでない場合に 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 "The string '$name' consists of all whitespace characters.\n";
} else {
echo "The string '$name' does not consist of all whitespace characters.\n";
}
}
?>
上の例の出力は以下となります。
The string 'string1' consists of all whitespace characters. The string 'string2' does not consist of all whitespace characters. The string 'string3' does not consist of all whitespace characters.
注意
注意:
-128 から 255 までの整数値を渡すと、ひとつの文字の ASCII 値とみなします (負の値には 256 を足して、拡張 ASCII の範囲に収まるようにします)。 それ以外の整数値は、10 進数を含む文字列とみなします。
参考
- ctype_cntrl() - 制御文字かどうかを調べる
- ctype_graph() - 空白以外の印字可能な文字かどうかを調べる
- ctype_punct() - 空白、英数字以外の出力可能な文字かどうかを調べる
gardnerjohng at hotmail dot com ¶
3 years ago
