如何检查$ _GET数组中的变量是否为整数?

max*_*n15 3 php validation get

我有一个这样的页面:

http://sitename/gallery.php?page=2

它底部有分页链接,我们可以浏览它们.每次点击页码时,它都会发送一个参数page = 1page = 2的GET请求,依此类推......

当我将这些值存储到$pageteh $_GET变量时,它是一个字符串值.我可以使用(int)这样的方法将它转换为整数:

if(!empty($_GET['page'])){
       $page = (int)$_GET['page'];
       echo "Page Number: ".$page;
}
Run Code Online (Sandbox Code Playgroud)

但是我怎样才能确保传递的值只是一个整数而不是其他废话?

Ja͢*_*͢ck 16

使用过滤器:

if (null !== ($page = filter_input(INPUT_GET, 'page', FILTER_VALIDATE_INT, FILTER_NULL_ON_FAILURE))) {
    // $page is now an integer
}
Run Code Online (Sandbox Code Playgroud)

这还会检查变量是否同时出现在查询字符串中.如果你想区分缺失和无效,你必须将最后一个参数留给filter_input():

$page = filter_input(INPUT_GET, 'page', FILTER_VALIDATE_INT);
// $page can be null (not present), false (present but not valid) or a valid integer
Run Code Online (Sandbox Code Playgroud)