如何从表单中获取 int 而不是 string?
从表单获取变量:
<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
Getting variable from form:
<form method = 'POST' action = ''>
<input type = 'text' name = 'a' size = '1' >
<input type = 'submit' value = 'Find it'>
</form>"
If I enter 1 and use gettype($POST_['a']) it returns me string, is it possible to enter int? because after this I want check if that variable is int.
UPDATE
Got answers that it returns always string and they offered me to use (int) or intval(), but then if it's really string like 'a' it returns 0, but it may be also integer value 0, how to overcome this problem?
UPDATE
After editing typo Brad Christie suggested best way, using is_numeric
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
您可以使用 is_numeric 来检查,并且 php 允许强制转换为 整数类型也是如此。
实际比较可以执行is_int。
更新
版本5.2有
filter_input
,可能会多一点对于这种数据类型(和其他数据类型)来说是稳健的:我选择了
FILTER_VALIDATE_INT
,但还有FILTER_SANITIZE_NUMBER_INT
和更多——这取决于您想要做什么。You can use is_numeric to check, and php allows casting to integer type, too.
For actual comparisons, you can perform is_int.
Update
Version 5.2 has
filter_input
which may be a bit more robust for this data type (and others):I chose
FILTER_VALIDATE_INT
, but there is alsoFILTER_SANITIZE_NUMBER_INT
and a lot more--it just depends what you want to do.通过 HTTP 通过网络发送,一切都是一个字符串。由您的服务器决定“1”应该是
1
。Sending over the wire via HTTP, everything is a string. It's up to your server to decide that "1" should be
1
.不可以。HTTP 只处理文本(或二进制文件)。
你必须转换它。
No. HTTP only deals with text (or binaries).
You have to convert it.
我会使用
(int)$_POST['a']
将其转换为整数。I'd use
(int)$_POST['a']
to convert it to an integer.如果您更喜欢保持广泛的类型兼容性并保留除 int 之外的输入类型(double、float、ecc。),我建议如下:
您将得到:
if you prefer mantain a wide type compatibility and preserve input types other than int (double, float, ecc.) i suggest something like this:
You will get: