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 — Auf Leerzeichen überprüfen
Description
$text
)
Prüft ob jedes Zeichen in text
irgendeine Art Leerzeichen erzeugt. Neben dem
eigentlichen Leerzeichen schließt das auch TAB, Zeilenforschub, Carriage
Return und Formularvorschub mit ein.
Parameter-Liste
-
text -
Der zu prüfende String.
Rückgabewerte
Liefert TRUE wenn jedes Zeichen in text
ein Leerzeichen ist (space, tab, linefeed ...), sonst FALSE.
Beispiele
Beispiel #1 ctype_space() Beispiel
<?php
$strings = array('string1' => "\n\r\t", 'string2' => "\narf12", 'string3' => '\n\r\t');
foreach ($strings as $name => $testcase) {
if (ctype_space($testcase)) {
echo "Der String '$name' besteht aus Leerzeichen.\n";
} else {
echo "Der String '$name' enthält nicht nur Leerzeichen.\n";
}
}
?>
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
Der String 'string1' besteht aus Leerzeichen. Der String 'string2' enthält nicht nur Leerzeichen. Der String 'string3' enthält nicht nur Leerzeichen.
Anmerkungen
Hinweis:
Wenn ein integer zwischen -128 und 255 (inklusive) übergeben wird, wird dieser als ASCII Wert eines einzelnen Buchstabens interpretiert (zu negativen Werten wird 256 dazu addiert, um Buchstaben des Erweiterten ASCII Zeichensatzes zu erlauben). Alle anderen Integer werden wie ein String interpretiert, welcher die dezimalen Ziffern des Integers enthält.
Siehe auch
- ctype_cntrl() - Auf Steuerzeichen überprüfen
- ctype_graph() - Auf druckbare Zeichen (außer Leerzeichen) überprüfen
- ctype_punct() - Prüft auf Sonderzeichem, d.h. auf druckbare Zeichen die weder Buchstaben noch Ziffern noch Leerzeichen sind.
