【问题标题】:How to get int instead string from form?如何从表单中获取int而不是字符串?
【发布时间】:2011-06-30 11:46:01
【问题描述】:

从表单中获取变量:

<form method = 'POST' action = ''>
        <input type = 'text' name = 'a' size = '1' >
        <input type = 'submit' value = 'Find it'>
</form>"

如果我输入 1 并使用 gettype($POST_['a']) 它返回字符串,是否可以输入 int?因为在此之后我想检查该变量是否为 int。

更新

得到答案,它总是返回字符串,他们让我使用 (int) 或 intval(),但是如果它真的是像 'a' 这样的字符串,它返回 0,但它也可能是整数值 0,如何克服这个问题?

更新

在编辑错字后,Brad Christie 提出了最好的方法,使用 is_numeric

【问题讨论】:

  • 在我的兴趣列表中有很多这样的问题,因为它们有标签 HTML。这不是一个真正的 HTML 问题,而是一个 PHP 问题。我应该取消标记 HTML 吗?

标签: php html string variables int


【解决方案1】:
// convert the $_POST['a'] to integer if it's valid, or default to 0
$int = (is_numeric($_POST['a']) ? (int)$_POST['a'] : 0);

您可以使用is_numeric 进行检查,php 也允许转换为integer 类型。

实际比较,可以执行is_int

更新

5.2 版有filter_input,这对于这种数据类型(和其他)可能更加健壮:

$int = filter_input(INPUT_POST, 'a', FILTER_VALIDATE_INT);

我选择了FILTER_VALIDATE_INT,但也有FILTER_SANITIZE_NUMBER_INTa lot more——这取决于你想做什么。

【讨论】:

  • $_POST['a']永远成为int,因此$int始终因此为零。
  • @AndrewMarshall:弗洛伊德式的失误,我在想 is_numeric。很好,我会纠正的。
  • @sdleihssirhc:我最初使用的是 is_int,这就是投反对票的原因。感谢@AndrewMarshall,它被抓住了。 -- @Templar:想了很多,非常欢迎你。 ;-)
  • 如果发布的对象是一个应该是整数的字符串数组,比如
  • @David 你可以使用array_map 这样做:array_map('intval', $_POST['ids'])
【解决方案2】:

通过 HTTP 通过网络发送,一切都是一个字符串。由您的服务器决定“1”应该是1

【讨论】:

    【解决方案3】:

    没有。 HTTP 只处理文本(或二进制文件)。

    你必须转换它。

    【讨论】:

    • int 不是方法。 intval($a)(int) $a
    【解决方案4】:

    我会使用(int)$_POST['a'] 将其转换为整数。

    【讨论】:

      【解决方案5】:

      如果您更喜欢保持广泛的类型兼容性并保留除 int(double、float、ecc)以外的输入类型,我建议这样:

      $var = is_numeric($_POST['a'])?$_POST['a']*1:$_POST['a'];
      

      你会得到:

      $_POST['a'] = "abc"; // string(3) "abc"
      $_POST['a'] = "10"; // int(10)
      $_POST['a'] = "10.12"; // float(10.12)
      

      【讨论】:

      • 是的,我们也可能发送浮动数字;)
      【解决方案6】:

      您可以像这样将变量转换为整数

      $var = (int) $_POST['a'];
      

      【讨论】:

        猜你喜欢
        • 2015-10-23
        • 1970-01-01
        • 2017-07-03
        • 2019-11-21
        • 1970-01-01
        • 2014-11-22
        • 2012-10-15
        • 2017-08-26
        相关资源
        最近更新 更多