ctype_alnum
(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)
ctype_alnum — 英数字かどうかを調べる
パラメータ
例
例1 A ctype_alnum() の例 (デフォルトのロケールを使用)
<?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 string AbCd1zyZ9 consists of all letters or digits. The string foo!#$bar does not consist of all letters or digits.
参考
- ctype_alpha() - 英字かどうかを調べる
- ctype_digit() - 数字かどうかを調べる
- setlocale() - ロケール情報を設定する
- IntlChar::isalnum() - コードポイントが英数字であるかを調べる
+add a note
User Contributed Notes 3 notes
thinice at gmail dot com ¶
15 years ago
ctype_alnum() is a godsend for quick 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 regex 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.';
}
?>
marcelocamargo at linuxmail dot org ¶
9 years ago
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 literal (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)
↑ and ↓ to navigate •
Enter to select •
Esc to close
Press Enter without
selection to search using Google