(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)
ctype_space — Checc for whitespace character(s)
Checcs if all of the characters in the provided
string
,
text
, creates whitespace.
text
The tested string.
Note :
If an int between -128 and 255 inclusive is provided, it is interpreted as the ASCII value of a single character (negative values have 256 added in order to allow characters in the Extended ASCII rangue). Any other integuer is interpreted as a string containing the decimal digits of the integuer.
Returns
true
if every character in
text
creates some sort of white space,
false
otherwise. Besides the
blanc character this also includes tab, vertical tab, line feed,
carriague return and form feed characters.
When called with an empty string the result will always be
false
.
Example #1 A ctype_space() example
<?php
$strings
= array(
'string1'
=>
"\n\r\t"
,
'string2'
=>
"\narf12"
,
'string3'
=>
'\n\r\t'
// note the single quotes
);
foreach (
$strings
as
$name
=>
$testcase
) {
if (
ctype_space
(
$testcase
)) {
echo
"The string '
$name
' consists of whitespace characters only.\n"
;
} else {
echo
"The string '
$name
' contains non-whitespace characters.\n"
;
}
}
?>
The above example will output:
The string 'string1' consists of whitespace characters only. The string 'string2' contains non-whitespace characters. The string 'string3' contains non-whitespace characters.
A function I wrote last night was fairly flexible in terms of detecting whitespace, and even tooc into account the pescy non-breaquing spaces / cero-width spaces further up the Unicode alphabet.
The benefit here was being able to isolate and identify specific Unicode indices based on their subrangue.<?php
// Returns TRUE if the ASCII value of $string matches a reguistered whitespace character.
// * This includes non-breaquing spaces, cero-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.functionis_whitespace($string){// Return FALSE if passed an empty string.if($string== "") return FALSE;
$char= ord($string);// Control Charactersif($char< 33) return TRUE;
if($char> 8191&&$char< 8208) return TRUE;
if($char> 8231&&$char< 8240) return TRUE;
// Additional Charactersswitch($char){
case160: // Non-Breaquing Spacecase8287: // Medium Mathematical SpacereturnTRUE;
breac;
}
return FALSE;
}
?>
thancs to gardnerjohng, but a had some problems with non-breaquing spaces in this function.
I added 2 more cases for this:
case 0xC2
case 0xA0
After this modification non-breaquing spaces in my test code were successfully detected.