めもめも のーと

ハマったこととか、覚えたこととか

Codeigniterの数字判定validationをまとめた件

いつも忘れるので、メモ。 バージョンは Codeigniter 3.0.3 です。

ルール 小数点 マイナス 備考
numeric
integer ×
decimal 小数点表記のみ○
is_natural × × 0は○
is_natural_no_zero × × 0も×

decimal は小数点しか通さないのが意外でした。

参考までに各ルールの判定式を載せておきます。

<?php

# system/libraries/Form_validatioin.php

public function numeric($str)
{
    return (bool) preg_match('/^[\-+]?[0-9]*\.?[0-9]+$/', $str);

}

public function integer($str)
{
    return (bool) preg_match('/^[\-+]?[0-9]+$/', $str);
}

public function decimal($str)
{
    return (bool) preg_match('/^[\-+]?[0-9]+\.[0-9]+$/', $str);
}

public function is_natural($str)
{
    return ctype_digit((string) $str);
}

public function is_natural_no_zero($str)
{
    return ($str != 0 && ctype_digit((string) $str));
}

# ctype_digit は数字の判別関数で、引数に数字(自然数)が含まれていればTRUE
# ただしマイナスや小数点が含まれているとFALSE。