- Laravel6.x
- PHP7.4
紛らわしいので調べました。
integer の挙動
入力値が整数で構成された文字列か数値であることをバリデートします。
※実際の判定文はこちら
// vendor\laravel\framework\src\Illuminate\Validation\Concerns\ValidatesAttributes.php
public function validateInteger($attribute, $value)
{
return filter_var($value, FILTER_VALIDATE_INT) !== false;
}
numericの挙動
入力値が数字または数値形式の文字列であることをバリデートします。
※実際の判定文はこちら
// vendor\laravel\framework\src\Illuminate\Validation\Concerns\ValidatesAttributes.php
public function validateNumeric($attribute, $value)
{
return is_numeric($value);
}
比較
- ○:バリデーションチェックを通過する
- ×:バリデーションチェックに引っかかりエラーになる
検証値 | integer |
numeric |
regex:/^[0-9]+$/i |
---|---|---|---|
'0' |
○ | ○ | ○ |
'123' |
○ | ○ | ○ |
'0123' |
× 注意! | ○ | ○ |
'+1' |
○ 注意! | ○ | × |
'-1' |
○ 注意! | ○ | × |
'0.1' |
× | ○ | × |
'1.1' |
× | ○ | × |
'113-0012' |
× | × | × |
'090-111-222' |
× | × | × |
'123' |
× | × | × |
おまけ 動作確認用
<?php
$list = ['0', '123', '0123', '+1', '-1', '0.1', '1.1', '114-0012', '090-2222-3333', '123'];
foreach ($list as $value) {
echo "$value ";
if (filter_var($value, FILTER_VALIDATE_INT) !== false) {
echo " |integer: ○";
} else {
echo " |integer: ×";
}
if (is_numeric($value)) {
echo " |numeric: ○";
} else {
echo " |numeric: ×";
}
if (preg_match("/^[0-9]+$/i", $value)) {
echo " |regex: ○";
} else {
echo " |regex: ×";
}
echo "\n";
}
?>