- is_int
文字列型で false になります。
マイナスの値で true になります。
<?php var_dump(is_int('5')); // false var_dump(is_int(-5)); // true
- ctype_digit
整数型で false になります。
<?php var_dump(ctype_digit(5)); // false
- is_numeric
マイナスの値や浮動小数点型で true になります。
<?php var_dump(is_numeric('-5')); // true var_dump(is_numeric('5.5')); // true
フォームからの入力値は通常文字列型で入ってくるので、入力値チェックでは ctype_digit() を使えばよさそうです。
でも、preg_match() を使えば型に左右されないようです。
<?php var_dump(preg_match('/^[0-9]+$/', 5)); // int(1) var_dump(preg_match('/^[0-9]+$/', '5')); // int(1)
PHP って、こういう厳密なところがいい加減で困ります。
ふつうに書籍とかでも「数字かどうか調べるには is_numeric() を使いましょう」とか、堂々と書いてあります。