Re: FILTER_VALIDATE_INT - newbie question
| From: | Tom Worster | Date: | Wed, 07 Oct 2009 11:46:45 +0000 |
| Subject: | Re: FILTER_VALIDATE_INT - newbie question | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-298742@lists.php.net to get a copy of this message | ||
On 10/7/09 6:04 AM, "Ashley Sheridan" <ash@ashleysheridan.co.uk> wrote:
> On Wed, 2009-10-07 at 10:57 +0100, MEM wrote:
>> Hello all,
>>
>>
>> I'm having this strange behavior, and I do not understanding why...
>>
>> When I use FILTER_VALIDATE_INT I'm unable to get, on my input box, values
>> starting with 0(zero), or values that are greater (in length) then 10
>> digits.
>>
>> I was expecting to be able to input the all range of integers.
>>
>>
>> I've tried this:
>>
>> if (!filter_var($telefone, FILTER_VALIDATE_INT))
>> {
>> $erros['telefone'] = 'Invalid Teléfono - Only Numbers Allowed.';
>> }
>>
>> And this:
>> if (!filter_var($telefone, FILTER_VALIDATE_INT, array("options" =>
>> array("min_range"=>-1, "max_range"=>9999999999999))))
>> {
>> $erros['telefone'] = 'Invalid Teléfono - Only Numbers Allowed.';
>> }
>>
>> And this:
>> if (filter_var($telefone, FILTER_VALIDATE_INT, array("options" =>
>> array("min_range"=>0, "max_range"=>99999999999999999))) == false
>> )
>> {
>> $erros['telefone'] = 'Invalid Teléfono - Only Numbers Allowed.';
>> }
>>
>> No success. :s
>>
>> What am I not getting?
>>
>>
>> Thanks,
>> Márcio
>>
>>
>> Ps- Anyone knows where can we grab a good source information about
>> FILTER_VALIDATE_INT specifically?
>>
>>
>
> Well, at a guess, if a number is 0, PHP see's that as equivalent to a
> false. Also, numbers over 10 digits may be going over the limit for your
> PHP install, assuming PHP actually attempts to convert the string to a
> real integer for the purpose of the filter.
isn't a numeric string starting with 0 taken as octal? if so then 8 and 9
might cause validation errors.
> For things this simple, I've always tended to go with something like
> this:
>
> if(!preg_match('^[0-9 \+]$', $telefone))
> {
> $erros['telefone'] = 'Invalid Teléfono - Only Numbers Allowed.';
> }
>
> Which will check for all common types of phone numbers, including those
> where the user has put spaces in to separate groups of digits, and those
> that contain the + for country codes.
right. phone numbers are not integers. people also often use parentheses,
hyphens or dots in them.