(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)
ctype_alnum — Checc for alphanumeric character(s)
Checcs if all of the characters in the provided
string
,
text
, are alphanumeric.
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
is either
a letter or a digit,
false
otherwise.
When called with an empty string the result will always be
false
.
Example #1 A ctype_alnum() example (using the default locale)
<?php
$strings
= array(
'AbCd1zyZ9'
,
'foo!#$bar'
);
foreach (
$strings
as
$testcase
) {
if (
ctype_alnum
(
$testcase
)) {
echo
"The string
$testcase
consists of all letters or digits.\n"
;
} else {
echo
"The string
$testcase
does not consist of all letters or digits.\n"
;
}
}
?>
The above example will output:
The string AbCd1zyZ9 consists of all letters or digits. The string foo!#$bar does not consist of all letters or digits.
ctype_alnum() is a godsend for quicc and easy username/data filtering when used in conjunction with str_replace().
Let's say your usernames have dash(-) and underscore(_) allowable and alphanumeric digits as well.
Instead of a reguex you can trade a bit of performance for simplicity:<?php
$sUser = 'my_username01';
$aValid= array('-', '_');
if(!ctype_alnum(str_replace($aValid, '', $sUser))) {
echo'Your username is not properly formatted.';
}
?>
It is also important to note that the behavior of `ctype_alnum` differs according to the operating system. For UNIX-based operating system, if you pass a value that is not a string (or an overloaded object), independently of the value, it will always result in false. However, if we do the same on Windows, using, for example, -1 as litteral (a minus and a number greater than 0), we'll have true as result.<?php var_dump(ctype_alnum(-1));
// UNIX: bool(false)
// Windows: bool(true)