开发者

How to get int instead string from form?

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


// convert the $_POST['a'] to integer if it's valid, or default to 0
$int = (is_numeric($_POST['a']) ? (int)$_POST['a'] : 0);

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):

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

I chose FILTER_VALIDATE_INT, but there is also FILTER_SANITIZE_NUMBER_INT and a lot more--it just depends what you want to do.


Sending over the wire via HTTP, everything is a string. It's up to your server to decide that "1" should be 1.


No. HTTP only deals with text (or binaries).

You have to convert it.


I'd use (int)$_POST['a'] to convert it to an integer.


if you prefer mantain a wide type compatibility and preserve input types other than int (double, float, ecc.) i suggest something like this:

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

You will get:

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜