PHP如何判断一个字符串是否为正整数

如何检查PHP中的字符串是否为正整数。

方法一:使用filter_var()函数

这是一种尽可能使用标准函数进行检查的方法。

function is_positive_integer_1($value) {
  $options = ['options' => ['min_range' => 1]];
  return is_int(filter_var($value, \FILTER_VALIDATE_INT, $options));
}

测试:

// true
is_positive_integer_1('1');
is_positive_integer_1('5');
is_positive_integer_1(PHP_INT_MAX);
is_positive_integer_1((string) PHP_INT_MAX);
is_positive_integer_1(100);
is_positive_integer_1(true);

// false
is_positive_integer_1(false);
is_positive_integer_1(null);
is_positive_integer_1('hello');
is_positive_integer_1('512MB');
is_positive_integer_1('-3');
is_positive_integer_1('0');
is_positive_integer_1('10.0');
is_positive_integer_1('10.5');
is_positive_integer_1(PHP_INT_MAX + 1);
is_positive_integer_1('0744');
is_positive_integer_1('0x34');

需要注意的是,它在传递时返回一个布尔值true。如果您不喜欢这种行为,则需要检查参数类型等措施。

PHP如何判断一个字符串是否为正整数

方法2:使用is_numeric()和intval()

function is_positive_integer_2($value) {
  return is_numeric($value) && intval($value) == $value && $value > 0;
}

测试:

// true
is_positive_integer_2('1');
is_positive_integer_2('5');
is_positive_integer_2(PHP_INT_MAX);
is_positive_integer_2((string) PHP_INT_MAX);
is_positive_integer_2(100);
is_positive_integer_2('10.0');

// false
is_positive_integer_2(true);
is_positive_integer_2(false);
is_positive_integer_2(null);
is_positive_integer_2('hello');
is_positive_integer_2('512MB');
is_positive_integer_2('-3');
is_positive_integer_2('0');
is_positive_integer_2('10.5');
is_positive_integer_2(PHP_INT_MAX + 1);
is_positive_integer_1('0744');
is_positive_integer_1('0x34');

这里的需要注意的是10.0,小数点以下全部为0的小数点数返回true。如果不喜欢这种行为,则需要检查字符串中是否包含。

本文来源:词雅网

本文地址:https://www.ciyawang.com/php-99.html

本文使用「 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 」许可协议授权,转载或使用请署名并注明出处。

相关推荐