3v4l.org

run code in 300+ PHP versions simultaneously
<? $values = array( '-0', -0, 0, 123, -123, '123', '-123', '0123', '123 ', '0', '000', '+123', '1.23', 1.23, '123e4', '0x123', 'potato', 'EEBD', false, null, ); foreach($values as $value){ echo("TRYING WITH "); var_dump($value); echo("is_int: "); var_dump(is_int($value)); echo("is_numeric: "); var_dump(is_numeric($value)); echo("regex: "); var_dump(preg_match('/^\-?[0-9]+$/',$value)); echo("ctype_digit: "); var_dump(ctype_digit(ltrim((string)$value, '-'))); echo("filter_var: "); var_dump(filter_var($value, FILTER_VALIDATE_INT)); echo("\n"); echo("\n"); } ?>
Output for 7.2.29 - 7.2.33, 7.3.16 - 7.3.31, 7.4.0 - 7.4.32, 8.0.0 - 8.0.12, 8.0.14 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.6
<? $values = array( '-0', -0, 0, 123, -123, '123', '-123', '0123', '123 ', '0', '000', '+123', '1.23', 1.23, '123e4', '0x123', 'potato', 'EEBD', false, null, ); foreach($values as $value){ echo("TRYING WITH "); var_dump($value); echo("is_int: "); var_dump(is_int($value)); echo("is_numeric: "); var_dump(is_numeric($value)); echo("regex: "); var_dump(preg_match('/^\-?[0-9]+$/',$value)); echo("ctype_digit: "); var_dump(ctype_digit(ltrim((string)$value, '-'))); echo("filter_var: "); var_dump(filter_var($value, FILTER_VALIDATE_INT)); echo("\n"); echo("\n"); } ?>
Output for 8.0.13
TRYING WITH string(2) "-0" is_int: bool(false) is_numeric: bool(true) regex: int(1) ctype_digit: bool(true) filter_var: int(0) TRYING WITH int(0) is_int: bool(true) is_numeric: bool(true) regex: int(1) ctype_digit: bool(true) filter_var: int(0) TRYING WITH int(0) is_int: bool(true) is_numeric: bool(true) regex: int(1) ctype_digit: bool(true) filter_var: int(0) TRYING WITH int(123) is_int: bool(true) is_numeric: bool(true) regex: int(1) ctype_digit: bool(true) filter_var: int(123) TRYING WITH int(-123) is_int: bool(true) is_numeric: bool(true) regex: int(1) ctype_digit: bool(true) filter_var: int(-123) TRYING WITH string(3) "123" is_int: bool(false) is_numeric: bool(true) regex: int(1) ctype_digit: bool(true) filter_var: int(123) TRYING WITH string(4) "-123" is_int: bool(false) is_numeric: bool(true) regex: int(1) ctype_digit: bool(true) filter_var: int(-123) TRYING WITH string(4) "0123" is_int: bool(false) is_numeric: bool(true) regex: int(1) ctype_digit: bool(true) filter_var: bool(false) TRYING WITH string(4) "123 " is_int: bool(false) is_numeric: bool(true) regex: int(0) ctype_digit: bool(false) filter_var: int(123) TRYING WITH string(1) "0" is_int: bool(false) is_numeric: bool(true) regex: int(1) ctype_digit: bool(true) filter_var: int(0) TRYING WITH string(3) "000" is_int: bool(false) is_numeric: bool(true) regex: int(1) ctype_digit: bool(true) filter_var: bool(false) TRYING WITH string(4) "+123" is_int: bool(false) is_numeric: bool(true) regex: int(0) ctype_digit: bool(false) filter_var: int(123) TRYING WITH string(4) "1.23" is_int: bool(false) is_numeric: bool(true) regex: int(0) ctype_digit: bool(false) filter_var: bool(false) TRYING WITH float(1.23) is_int: bool(false) is_numeric: bool(true) regex: int(0) ctype_digit: bool(false) filter_var: bool(false) TRYING WITH string(5) "123e4" is_int: bool(false) is_numeric: bool(true) regex: int(0) ctype_digit: bool(false) filter_var: bool(false) TRYING WITH string(5) "0x123" is_int: bool(false) is_numeric: bool(false) regex: int(0) ctype_digit: bool(false) filter_var: bool(false) TRYING WITH string(6) "potato" is_int: bool(false) is_numeric: bool(false) regex: int(0) ctype_digit: bool(false) filter_var: bool(false) TRYING WITH string(4) "EEBD" is_int: bool(false) is_numeric: bool(false) regex: int(0) ctype_digit: bool(false) filter_var: bool(false) TRYING WITH bool(false) is_int: bool(false) is_numeric: bool(false) regex: int(0) ctype_digit: bool(false) filter_var: bool(false) TRYING WITH NULL is_int: bool(false) is_numeric: bool(false) regex: int(0) ctype_digit: bool(false) filter_var: bool(false)
Output for 7.0.0 - 7.0.20, 7.1.0 - 7.1.20, 7.2.0 - 7.2.6, 7.3.32 - 7.3.33, 7.4.33
TRYING WITH string(2) "-0" is_int: bool(false) is_numeric: bool(true) regex: int(1) ctype_digit: bool(true) filter_var: int(0) TRYING WITH int(0) is_int: bool(true) is_numeric: bool(true) regex: int(1) ctype_digit: bool(true) filter_var: int(0) TRYING WITH int(0) is_int: bool(true) is_numeric: bool(true) regex: int(1) ctype_digit: bool(true) filter_var: int(0) TRYING WITH int(123) is_int: bool(true) is_numeric: bool(true) regex: int(1) ctype_digit: bool(true) filter_var: int(123) TRYING WITH int(-123) is_int: bool(true) is_numeric: bool(true) regex: int(1) ctype_digit: bool(true) filter_var: int(-123) TRYING WITH string(3) "123" is_int: bool(false) is_numeric: bool(true) regex: int(1) ctype_digit: bool(true) filter_var: int(123) TRYING WITH string(4) "-123" is_int: bool(false) is_numeric: bool(true) regex: int(1) ctype_digit: bool(true) filter_var: int(-123) TRYING WITH string(4) "0123" is_int: bool(false) is_numeric: bool(true) regex: int(1) ctype_digit: bool(true) filter_var: bool(false) TRYING WITH string(4) "123 " is_int: bool(false) is_numeric: bool(false) regex: int(0) ctype_digit: bool(false) filter_var: int(123) TRYING WITH string(1) "0" is_int: bool(false) is_numeric: bool(true) regex: int(1) ctype_digit: bool(true) filter_var: int(0) TRYING WITH string(3) "000" is_int: bool(false) is_numeric: bool(true) regex: int(1) ctype_digit: bool(true) filter_var: bool(false) TRYING WITH string(4) "+123" is_int: bool(false) is_numeric: bool(true) regex: int(0) ctype_digit: bool(false) filter_var: int(123) TRYING WITH string(4) "1.23" is_int: bool(false) is_numeric: bool(true) regex: int(0) ctype_digit: bool(false) filter_var: bool(false) TRYING WITH float(1.23) is_int: bool(false) is_numeric: bool(true) regex: int(0) ctype_digit: bool(false) filter_var: bool(false) TRYING WITH string(5) "123e4" is_int: bool(false) is_numeric: bool(true) regex: int(0) ctype_digit: bool(false) filter_var: bool(false) TRYING WITH string(5) "0x123" is_int: bool(false) is_numeric: bool(false) regex: int(0) ctype_digit: bool(false) filter_var: bool(false) TRYING WITH string(6) "potato" is_int: bool(false) is_numeric: bool(false) regex: int(0) ctype_digit: bool(false) filter_var: bool(false) TRYING WITH string(4) "EEBD" is_int: bool(false) is_numeric: bool(false) regex: int(0) ctype_digit: bool(false) filter_var: bool(false) TRYING WITH bool(false) is_int: bool(false) is_numeric: bool(false) regex: int(0) ctype_digit: bool(false) filter_var: bool(false) TRYING WITH NULL is_int: bool(false) is_numeric: bool(false) regex: int(0) ctype_digit: bool(false) filter_var: bool(false)
Output for 5.5.24 - 5.5.35, 5.6.8 - 5.6.28
TRYING WITH string(2) "-0" is_int: bool(false) is_numeric: bool(true) regex: int(1) ctype_digit: bool(true) filter_var: int(0) TRYING WITH int(0) is_int: bool(true) is_numeric: bool(true) regex: int(1) ctype_digit: bool(true) filter_var: int(0) TRYING WITH int(0) is_int: bool(true) is_numeric: bool(true) regex: int(1) ctype_digit: bool(true) filter_var: int(0) TRYING WITH int(123) is_int: bool(true) is_numeric: bool(true) regex: int(1) ctype_digit: bool(true) filter_var: int(123) TRYING WITH int(-123) is_int: bool(true) is_numeric: bool(true) regex: int(1) ctype_digit: bool(true) filter_var: int(-123) TRYING WITH string(3) "123" is_int: bool(false) is_numeric: bool(true) regex: int(1) ctype_digit: bool(true) filter_var: int(123) TRYING WITH string(4) "-123" is_int: bool(false) is_numeric: bool(true) regex: int(1) ctype_digit: bool(true) filter_var: int(-123) TRYING WITH string(4) "0123" is_int: bool(false) is_numeric: bool(true) regex: int(1) ctype_digit: bool(true) filter_var: bool(false) TRYING WITH string(4) "123 " is_int: bool(false) is_numeric: bool(false) regex: int(0) ctype_digit: bool(false) filter_var: int(123) TRYING WITH string(1) "0" is_int: bool(false) is_numeric: bool(true) regex: int(1) ctype_digit: bool(true) filter_var: int(0) TRYING WITH string(3) "000" is_int: bool(false) is_numeric: bool(true) regex: int(1) ctype_digit: bool(true) filter_var: bool(false) TRYING WITH string(4) "+123" is_int: bool(false) is_numeric: bool(true) regex: int(0) ctype_digit: bool(false) filter_var: int(123) TRYING WITH string(4) "1.23" is_int: bool(false) is_numeric: bool(true) regex: int(0) ctype_digit: bool(false) filter_var: bool(false) TRYING WITH float(1.23) is_int: bool(false) is_numeric: bool(true) regex: int(0) ctype_digit: bool(false) filter_var: bool(false) TRYING WITH string(5) "123e4" is_int: bool(false) is_numeric: bool(true) regex: int(0) ctype_digit: bool(false) filter_var: bool(false) TRYING WITH string(5) "0x123" is_int: bool(false) is_numeric: bool(true) regex: int(0) ctype_digit: bool(false) filter_var: bool(false) TRYING WITH string(6) "potato" is_int: bool(false) is_numeric: bool(false) regex: int(0) ctype_digit: bool(false) filter_var: bool(false) TRYING WITH string(4) "EEBD" is_int: bool(false) is_numeric: bool(false) regex: int(0) ctype_digit: bool(false) filter_var: bool(false) TRYING WITH bool(false) is_int: bool(false) is_numeric: bool(false) regex: int(0) ctype_digit: bool(false) filter_var: bool(false) TRYING WITH NULL is_int: bool(false) is_numeric: bool(false) regex: int(0) ctype_digit: bool(false) filter_var: bool(false)

preferences:
174.06 ms | 409 KiB | 183 Q