Jump to content
Larry Ullman's Book Forums

Recommended Posts

Larry, in your 4th edition of PHP and MySQL for Dynamic Web Sites, you use several times the FILTER_VALIDATE_INT filter with the filter_var() function in order to validate form input as positive integers (that is, natural numbers excluding zero, depending on whether you count zero as a natural number).

 

To accomplish this you write in your book:

filter_var($var, FILTER_VALIDATE_INT, array('min_range' => 1))

 

However, according to the PHP function reference, the third argument passed to the filter_var() function needs to be an associative array named $options. Inside this array you should then create another array and define the options there. So you would write:

 

filter_var($var, FILTER_VALIDATE_INT, array('options' => array('min_range' => 1)))

 

You can also establish the 'max_range' option for this type of filter. A complete list of available filters to be used with filter_var() can be found here. Options to be established for validate filters can be found here.

 

I have tested this in PHP 5.3.8 (can someone test using other PHP versions?) and when using the approach specified in the book, PHP ignores the third argument (it does not complain strangely enough) and will accept negative numbers (not zero however).

Link to comment
Share on other sites

  • 3 weeks later...

Sorry for the delay. I meant to get to this before my vacation (on it now), but didn't. My immediate answer is that I've been using filter_var() for years now and never once had to create a subarray indexed at "options". I want to confirm that it's not behaving properly before giving an official answer. But this has not been a problem or requirement for me in the past.

Link to comment
Share on other sites

  • 2 weeks later...

Again, sorry for the delay. Back from vacation and I just tested this. I see what you're saying in the PHP manual but it works either way:

 

$var = 0;
if (filter_var($var, FILTER_VALIDATE_INT, array('min_range' => 1))) {
echo 'passed';
} else {
echo 'did not pass';
}

or

$var = 0;
if (filter_var($var, FILTER_VALIDATE_INT, array('options' => array('min_range' => 1)))) {
echo 'passed';
} else {
echo 'did not pass';
}

Link to comment
Share on other sites

 Share

×
×
  • Create New...