On Sun, Mar 17, 2013 at 10:20 PM, Maciek Sokolewicz < maciek.sokolewicz@xxxxxxxxx> wrote: > On 16-3-2013 19:20, Matijn Woudt wrote: > >> On Sat, Mar 16, 2013 at 6:52 PM, Maciek Sokolewicz < >> maciek.sokolewicz@xxxxxxxxx> wrote: >> >> Hi, >>> >>>> >>>> I have tried to find a way to check if a character string is possible to >>>> test whether it is convertible to an intger ! >>>> >>>> any suggestion ? >>>> >>>> BR georg >>>> >>>> >>> All responses in this thread have been very nice; but you could also try >>> a >>> much simpler 2-step check: >>> >>> 1. is_numeric >>> 2. if true > check if there's a decimal character in the string: >>> >>> if(is_numeric($str) && false === strpos('.', $str)) { >>> // it's an int for sure >>> } else { >>> // might be a number, but it's definitly not an int >>> >>> } >>> >>> >> Wrong. is_numeric will accept 1e1, which is a float, so you would need to >> check for e or E too. >> >> - Matijn >> >> Although in theory I agree, indeed any e* number is treated as a > floating point number. However, considering the exponent and the base are > forced to be integer numbers (due to exclusion of decimal points), in the > real number system, you will *always* end up with a natural number, i.e. > integer. Regardless of your input. > > So as a result, the input could always be interpreted as an integer, > without any precision-loss using the method above. > - Tul > Except... that it might not fit in an 32 or 64 bit integer, which would lead to precision loss. - Matijn