I have some values to save into postmeta and usermeta table. Before save, I already done this: $value = intval($value)
. I think this is enough. But I see some plugins still use filters on those numbers. I want to make sure that I can do with intval
and without safety filter.
1 Answer
intval()
behaves sometimes a little bit counter-intuitive when then value has leading zeros or when it is a mathematic expression. The result should always be safe, but is not always what you might expect.
A simple example:
intval( '9223372036854775808' );
will never return this value, because even 64 bit system cannot handle such a large number. You get 9223372036854775807
on a 64 bit system and 2147483647
on 32 bit.
But if you use:
preg_match( '~\d+~', '9223372036854775808', $matches );
$matches[0]
will return this number unchanged.
So, it depends on the values you expect.
-
I see. I will only use it on tiny numbers, 1, -1, and 0. so, that should be fine. Anyway, it's interesting to learn this behavior.– JennyCommented Sep 22, 2012 at 10:14