is_intとis_mumericの間の関数が欲しい

is_intはint型チェック、is_mumericは数値っぽいものをチェック。
string型でもintっぽいかどうかチェックしたい。

<?php
function range_int($val) {
  return (is_numeric($val) && (string)$val === (string)(int)$val);
}
$arr = array(
    "123",
    "0",
    "-1",
    0123,
    2147483647,
    2147483648,
    0,
    11,
    9011,
    00,
    0x12,
    true,
    " ",
    "",
    1.1,
    "123.1",
    "00",
    "0x123",
    "123a",
    "ada",
    "--1",
    "999999999999999999999999999999999",
    false,
    null,
    '1 '
);
foreach ($arr as $val) {
    print range_int($val)? 'T': 'F';
    print ' ';
    if ($val === null) {
        print 'null';
    } elseif ($val === true) {
        print 'true';
    } elseif ($val === false) {
        print 'false';
    } elseif (is_string($val)) {
        print '"' . $val . '"';
    } else {
        print $val;
    }
    print "\n";
}
T "123"
T "0"
T "-1"
T 83
T 2147483647
F 2147483648
T 0
T 11
T 9011
T 0
T 18
F true
F " "
F ""
F 1.1
F "123.1"
F "00"
F "0x123"
F "123a"
F "ada"
F "--1"
F "999999999999999999999999999999999"
F false
F null
F "1 "
F ".1"

is_numeric

T "123"
T "0"
T "-1"
T 83
T 2147483647
T 2147483648
T 0
T 11
T 9011
T 0
T 18
F true
F " "
F ""
T 1.1
T "123.1"
T "00"
T "0x123"
F "123a"
F "ada"
F "--1"
T "999999999999999999999999999999999"
F false
F null
F "1 "
T ".1"

is_int

F "123"
F "0"
F "-1"
T 83
T 2147483647
F 2147483648
T 0
T 11
T 9011
T 0
T 18
F true
F " "
F ""
F 1.1
F "123.1"
F "00"
F "0x123"
F "123a"
F "ada"
F "--1"
F "999999999999999999999999999999999"
F false
F null
F "1 "
F ".1"