downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

ctype_alpha> <Ctype 関数
Last updated: Fri, 13 Nov 2009

view this page in

ctype_alnum

(PHP 4 >= 4.0.4, PHP 5)

ctype_alnum英数字かどうかを調べる

説明

bool ctype_alnum ( string $text )

与えられた文字列 text のすべての文字が英字または 数字であるかどうかを調べます。標準の C ロケールの場合、 文字は [A-Za-z] となります。

パラメータ

text

調べる文字列。

返り値

text のすべての文字が英字または数字だった場合に TRUE 、そうでない場合に FALSE を返します。

例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.

参考



add a note add a note User Contributed Notes
ctype_alnum
Josip Rodin
12-Aug-2009 04:13
There doesn't actually seem to be a performance loss compared to using regexes. For example:

<?php        
$sUser
= 'my_username01';

$time_start1 = microtime(true);
$aValid = array('-', '_');
$ret1 = ctype_alnum(str_replace($aValid, '', $sUser));
$time_end1 = microtime(true);
$time1 = $time_end1 - $time_start1;
printf("Checked it with ctype_alnum and got %d in %.10f seconds\n", print_r($ret1, true), $time1);

$time_start2 = microtime(true);
$ret2 = preg_match('/^[\w-]+$/', $sUser);
$time_end2 = microtime(true);
$time2 = $time_end2 - $time_start2;
printf("Checked it with preg_match  and got %d in %.10f seconds\n", print_r($ret2, true), $time2);

?>

This returns:

% time php ctype_alnum.php
Checked it with ctype_alnum and got 1 in 0.0000379086 seconds
Checked it with preg_match  and got 1 in 0.0001120567 seconds
php ctype_alnum.php  0,01s user 0,01s system 84% cpu 0,024 total
% time php ctype_alnum.php
Checked it with ctype_alnum and got 1 in 0.0000400543 seconds
Checked it with preg_match  and got 1 in 0.0001108646 seconds
php ctype_alnum.php  0,00s user 0,02s system 98% cpu 0,024 total
% time php ctype_alnum.php
Checked it with ctype_alnum and got 1 in 0.0000391006 seconds
Checked it with preg_match  and got 1 in 0.0001142025 seconds
php ctype_alnum.php  0,02s user 0,01s system 98% cpu 0,024 total

ctype_alnum() seems to be consistently faster. I'm guessing that the preg engine initialization induces a bit of overhead.
thinice at gmail dot com
22-Jul-2009 09:46
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.';
}
?>

ctype_alpha> <Ctype 関数
Last updated: Fri, 13 Nov 2009
 
 
show source | credits | sitemap | contact | advertising | mirror sites