is_int(1)true
is_int(1.0)false
is_int('1')false
is_numeric(1)true
is_numeric(1.0)true
is_numeric('1')true
is_numeric(123.456)true
ctype_digit('1')true
ctype_digit('1.0')false
ctype_digit('1abc')false
ctype_digit(1)false
ctype_digit(strval(1))true
preg_match('/^\d+$/', '1234')true
preg_match('/^\d+$/', 'toto')false
preg_match('/^\d+$/', ' 12 ')false

<?php

/**
 * @file est_un_nombre_entier.php
 * @brief Ce script essaie différentes façons de tester un nombre entier.
 *
 * @author hughes monget
 * @see http://monget.com/
 */


$arr_str_code = <<<CODE

is_int(1)
is_int(1.0)
is_int('1')

is_numeric(1)
is_numeric(1.0)
is_numeric('1')
is_numeric(123.456)

ctype_digit('1')
ctype_digit('1.0')
ctype_digit('1abc')
ctype_digit(1)
ctype_digit(strval(1))

preg_match('/^\d+$/', '1234')
preg_match('/^\d+$/', 'toto')
preg_match('/^\d+$/', ' 12 ')

CODE;

$arr_str_code explode("\n"$arr_str_code);
$arr_str_code array_map('trim'$arr_str_code);
$arr_str_code array_filter($arr_str_codecreate_function('$s''return !!$s;'));

echo 
'<pre><table border="1">';
foreach (
$arr_str_code as $str_code)
{
    eval(
'$bool_test = (bool)'.$str_code.';');
    echo 
'<tr><td>',htmlspecialchars($str_code),'</td><td>';
    if (
$bool_test)
        { echo 
'<span style="color: ForestGreen">true</span>'; }
    else
        { echo 
'<span style="color: FireBrick">false</span>'; }
    echo 
'</td></tr>';
}
echo 
'</table></pre>';

echo 
'<hr />';

highlight_file(__FILE__);