On Fri, Mar 15, 2013 at 4:00 PM, Ashley Sheridan <ash@xxxxxxxxxxxxxxxxxxxx>wrote: > ** > On Fri, 2013-03-15 at 04:57 -0500, tamouse mailing lists wrote: > > On Fri, Mar 15, 2013 at 3:55 AM, Peter Ford <pete@xxxxxxxxxxxxx> wrote: > > On 15/03/13 06:21, Jim Lucas wrote: > >> > >> On 3/14/2013 4:05 PM, Matijn Woudt wrote: > >>> > >>> On Thu, Mar 14, 2013 at 11:44 PM, Jim Lucas <lists@xxxxxxxxx> wrote: > >>> > >>>> On 03/14/2013 11:50 AM, Samuel Lopes Grigolato wrote: > >>>> > >>>>> Something like "if (is_numeric($var)&& $var == floor($var))" will do > >>>>> the > >>>>> > >>>>> trick. I don't know if there's a better (more elegant) way. > >>>>> > >>>>> > >>>>> On Thu, Mar 14, 2013 at 3:09 PM, Matijn Woudt<tijnema@xxxxxxxxx> wrote: > >>>>> > >>>>> On Thu, Mar 14, 2013 at 7:02 PM, georg<georg.chambert@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 > >>>>>>> > >>>>>> > >>>>>> > >>>>>> You could use is_numeric for that, though it also accepts floats. > >>>>>> > >>>>>> - Matijn > >>>>>> > >>>>>> > >>>>> > >>>> for that type of test I have always used this: > >>>> > >>>> if ( $val == (int)$val ) { > >>>> > >>>> http://www.php.net/manual/en/**language.types.integer.php#** > >>>> > >>>> language.types.integer.casting<http://www.php.net/manual/en/language.types.integer.php#language.types.integer.casting> > >>>> > >>>> > >>>> > >>> I hope you're not serious about this... > >>> > >>> When comparing a string and an int, PHP will translate the string to int > >>> too, and of course they will always be equal then. > >>> So: > >>> $a = "abc"; > >>> if($a == (int)$a) echo "YES"; > >>> else echo "NO"; > >>> Will always return YES. > >>> > >>> - Matijn > >>> > >> > >> Hmmmm... Interesting. Looking back at my code base where I thought I was > >> doing that, turns out the final results were not that, but this: > >> > >> $value = "asdf1234"; > >> > >> if ( $value === (string)intval($value) ) { > >> > >> Looking back at the OP's request and after a little further searching, > >> it seems that there might be a better possible solution for what the OP > >> is requesting. > >> > >> <?php > >> > >> $values = array("asdf1234", "123.123", "123"); > >> > >> foreach ( $values AS $value ) { > >> > >> echo $value; > >> > >> if ( ctype_digit($value) ) { > >> echo ' - is all digits'; > >> } else { > >> echo ' - is NOT all digits'; > >> } > >> echo '<br />'.PHP_EOL; > >> } > >> > >> returns... > >> > >> asdf1234 - is NOT all digits > >> 123.123 - is NOT all digits > >> 123 - is all digits > >> > >> http://www.php.net/manual/en/function.ctype-digit.php > >> > >> An important note: > >> > >> This function expects a string to be useful, so for example passing in > >> an integer may not return the expected result. However, also note that > >> HTML forms will result in numeric strings and not integers. See also the > >> types section of the manual. > >> > >> -- > >> Jim > >> > > > > Integers can be negative too: I suspect your test would reject a leading > > '-'... > > > For my money, `is_numeric()` does just what I want. > > > > The thing is, is_numeric() will not check if a string is a valid int, but > any valid number, including a float. > > For something like this, wouldn't a regex be better? > > if(preg_match('/^\-?\d+$/', $string)) > echo int > > Thanks, > Ash > http://www.ashleysheridan.co.uk > > > That is so about is_numeric(), but once I know it's a numeric, coercing it to just an int is easy. *Validating*, rather than just assuring, that a string is an integer is another matter; if you need to give feedback to the user, etc., in which case a Regex is better. (One small nit, + is possible on integers, too.)