FILTER_SANITIZE_NUMBER_INT不会将字符串转换为int

时间:2015-11-10 14:12:23

标签: php get

我认为filter_input(type, name, FILTER_SANITIZE_NUMBER_INT)会将字符串转换为int,但似乎没有。

$id = filter_input(INPUT_GET, 'id', FILTER_SANITIZE_NUMBER_INT);

if (isset($id) && is_int($id))

还有其他干净但有效的方法吗?

3 个答案:

答案 0 :(得分:3)

你总是可以施展它:

$id = (int) $_GET['id'];

答案 1 :(得分:3)

您可以通过各种方式将字符串转换为整数:

$id = (int)$_GET['id']; // Like wogsland showed.
$id = intval($_GET['id']); // This works but is around twice as slow as (int).

以下是我发现的一些测试,比较两者:Fastest way to convert string to integer in PHP

答案 2 :(得分:1)

通过(int)$ _ GET ['id']转换为int似乎是最快的选择。您还可以使用is_numeric()来检查字符串是否为数字。

请注意,filter_var可以在失败时返回布尔值false,将其作为整数0进行求值。

您可以在manual中了解有关字符串转换的更多信息。

手册中的警告: 可以转换布尔值,浮点数和字符串,但是对于其他类型,转换为整数的行为是未定义的。不要依赖任何观察到的行为,因为它可能会在没有通知的情况下发生变化!