【问题标题】:How to check a query string is a positive integer in PHP [duplicate]如何检查查询字符串是PHP中的正整数[重复]
【发布时间】:2014-08-20 04:52:12
【问题描述】:

我在查询字符串中传递了一些数值,我需要检查传递的值是否只是正字符串,即应该大于 0 并且没有小数。

if( !(is_int($url_segments['cid']) && is_int($url_segments['bid'])))
{
 show_error('ERROR :: CID and BID should be positive integers only');
 return FALSE;
}

如果我在查询字符串中传递?cid=3&bid=4,上述检查返回false。

如何检查正整数?

【问题讨论】:

  • $x>0 = $x 是正数
  • @Ja͢ck 是的 $url_segments 是 $_GET 的别名: $url_segments = array(); $url_segments['bid'] = (isset($_GET['BID'])) ? $_GET['BID'] : 0; $url_segments['cid'] = (isset($_GET['CID'])) ? $_GET['CID'] : 0;
  • @Dagon $x > 0 将传递浮点数,在我的情况下这是错误的
  • 从重复的问题来看,this answer 可以说是最好的。

标签: php numbers query-string


【解决方案1】:

好的,如果您需要 int 值,请使用 ctype_digit()

if (! (ctype_digit($url_segments['cid']) and ctype_digit($url_segments['bid']))
and (ctype_digit($url_segments['cid'])<=0 or ctype_digit($url_segments['bid'])<=0) ) {

}

【讨论】:

  • 不检查是否为正整数。
【解决方案2】:
if ( !(is_numeric($url_segments['cid']) and is_numeric($url_segments['bid']))) {

}

【讨论】:

  • is_int 不是is_numeric
  • "我正在传递一些数值"
  • 我猜“字符串是一个正整数”只是一个矛盾的说法,所以它和任何想法一样好
  • @Dagon 使用 is_int() 不会有用,因为它不是整数 :)
【解决方案3】:

if(is_numeric($_GET['cid']) && $_GET['cid'] >= 0 && is_numeric($_GET['bid']) && $_GET['bid'] >= 0) {

返回真; }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-18
    • 2018-05-24
    • 2012-04-27
    • 1970-01-01
    • 2021-01-15
    • 1970-01-01
    • 2016-04-30
    • 1970-01-01
    相关资源
    最近更新 更多