Php filter var float

Php filter var float

When using one of these filters as a default filter either through your ini file or through your web server’s configuration, the default flags is set to FILTER_FLAG_NO_ENCODE_QUOTES . You need to explicitly set filter.default_flags to 0 to have quotes encoded by default. Like this:

Example #1 Configuring the default filter to act like htmlspecialchars

Changelog

Version Description
8.1.0 FILTER_SANITIZE_STRING and FILTER_SANITIZE_STRIPPED have been deprecated.
8.0.0 FILTER_SANITIZE_MAGIC_QUOTES has been removed.
7.3.0 FILTER_SANITIZE_ADD_SLASHES was added as a replacement for FILTER_SANITIZE_MAGIC_QUOTES
7.3.0 FILTER_SANITIZE_MAGIC_QUOTES has been deprecated.

User Contributed Notes 15 notes

FILTER_SANITIZE_STRING doesn’t behavior the same as strip_tags function. strip_tags allows less than symbol inferred from context, FILTER_SANITIZE_STRING strips regardless.
$smaller = «not a tag < 5" ;
echo strip_tags ( $smaller ); // -> not a tag < 5
echo filter_var ( $smaller , FILTER_SANITIZE_STRING ); // -> not a tag
?>

Remember to trim() the $_POST before your filters are applied:

// We trim the $_POST data before any spaces get encoded to «%20»

// Trim array values using this function «trim_value»
function trim_value (& $value )
$value = trim ( $value ); // this removes whitespace and related characters from the beginning and end of the string
>
array_filter ( $_POST , ‘trim_value’ ); // the data in $_POST is trimmed

$postfilter = // set up the filters to be used with the trimmed post array
array(
‘user_tasks’ => array( ‘filter’ => FILTER_SANITIZE_STRING , ‘flags’ => ! FILTER_FLAG_STRIP_LOW ), // removes tags. formatting code is encoded — add nl2br() when displaying
‘username’ => array( ‘filter’ => FILTER_SANITIZE_ENCODED , ‘flags’ => FILTER_FLAG_STRIP_LOW ), // we are using this in the url
‘mod_title’ => array( ‘filter’ => FILTER_SANITIZE_ENCODED , ‘flags’ => FILTER_FLAG_STRIP_LOW ), // we are using this in the url
);

$revised_post_array = filter_var_array ( $_POST , $postfilter ); // must be referenced via a variable which is now an array that takes the place of $_POST[]
echo ( nl2br ( $revised_post_array [ ‘user_tasks’ ])); //— use nl2br() upon output like so, for the [‘user_tasks’] array value so that the newlines are formatted, since this is our HTML field and we want to maintain newlines
?>

Читайте также:  Прочитать xml файл php

To include multiple flags, simply separate the flags with vertical pipe symbols.

For example, if you want to use filter_var() to sanitize $string with FILTER_SANITIZE_STRING and pass in FILTER_FLAG_STRIP_HIGH and FILTER_FLAG_STRIP_LOW, just call it like this:

$string = filter_var($string, FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_HIGH | FILTER_FLAG_STRIP_LOW);

The same goes for passing a flags field in an options array in the case of using callbacks.

$var = filter_var($string, FILTER_SANITIZE_SPECIAL_CHARS,
array(‘flags’ => FILTER_FLAG_STRIP_LOW | FILTER_FLAG_ENCODE_HIGH));

Thanks to the Brain Goo blog at popmartian.com/tipsntricks/for this info.

Although it’s specifically mentioned in the above documentation, because many seem to find this unintuitive it’s worth pointing out that FILTER_SANITIZE_NUMBER_FLOAT will remove the decimal character unless you specify FILTER_FLAG_ALLOW_FRACTION:

echo filter_var ( $number_string , FILTER_SANITIZE_NUMBER_FLOAT ); // 1234

echo filter_var ( $number_string , FILTER_SANITIZE_NUMBER_FLOAT , FILTER_FLAG_ALLOW_FRACTION ); // 12.34
?>

It’s not entirely clear what the LOW and HIGH ranges are. LOW is characters below 32, HIGH is those above 127, i.e. outside the ASCII range.

$a = «\tcafé\n» ;
//This will remove the tab and the line break
echo filter_var ( $a , FILTER_SANITIZE_STRING , FILTER_FLAG_STRIP_LOW );
//This will remove the é.
echo filter_var ( $a , FILTER_SANITIZE_STRING , FILTER_FLAG_STRIP_HIGH );
?>

Please be aware that when using filter_var() with FILTER_SANITIZE_NUMBER_FLOAT and FILTER_SANITIZE_NUMBER_INT the result will be a string, even if the input value is actually a float or an int.

Use FILTER_VALIDATE_FLOAT and FILTER_VALIDATE_INT, which will convert the result to the expected type.

Just to clarify, since this may be unknown for a lot of people:

ASCII characters above 127 are known as «Extended» and they represent characters such as greek letters and accented letters in latin alphabets, used in languages such as pt_BR.

A good ASCII quick reference (aside from the already mentioned Wikipedia article) can be found at: http://www.asciicodes.com/

Читайте также:  How to set java home windows

Here is a simpler and a better presented ASCII list for the <32 or 127>filters
(if wikipedia confused the hell out of you):

Источник

Ещё раз о filter var / PHP. Особенности и фичи

Очень часто приходится сталкиваться с простейшей задачей — валидацией данных из формы или любых других источников (кукисы, заголовок запроса, etc.) И каждый раз 95% разработчиков городят какие-то неимоверные велосипеды (регулярные выражения, «уникальные» алгоритмы хеширования паролей, etc). И каждый раз мне приходится рассказывать о такой невероятно полезной и нужной функции php — filter_var!

Итак, встречаем, встроенная функция валидации данных.

Эта замечательная функция появилась уже давно, в PHP 5.2.0, но до сих пор, очень малый процент разработчиков применяют её, предпочитая свои велосипеды. И это очень зря, ведь Вы используете готовые фреймворки, ORM и другие инструменты? Так почему Вы не валидируете данные встроенными методами?

Фильтры валидации данных

  • FILTER_VALIDATE_BOOLEAN — проверяет, что значение является корректным булевым значением. Использует неявное приведение типов. Примеры валидных значений: «1», «true», «on», «yes».
  • FILTER_VALIDATE_EMAIL — проверяет, что значение является корректным email.
  • FILTER_VALIDATE_FLOAT — проверяет, что значение является корректным числом с плавающей точкой.
  • FILTER_VALIDATE_INT — проверяет, что значение является корректным целым числом. Дополнительно можно проверить входит ли значение в определенный диапазон.
  • FILTER_VALIDATE_IP — проверяет, что значение является корректным ip-адресом (v4 или v6). Дополнительно можно проверить, что IP соответствует протоколу IPv4 или IPv6, а также отсутствие вхождения в частные или зарезервированные диапазоны.
  • FILTER_VALIDATE_REGEXP — Проверяет значение на соответствие regexp, Perl-совместимому регулярному выражению.
  • FILTER_VALIDATE_URL — проверяет, что значение является корректным url адресом (в соответствии с RFC 2396).
  • FILTER_VALIDATE_INT
    • Числа +0 и -0 не пройдут проверку на целые числа, но пройдут ее на числа с плавающей точкой.
    • Корректная ссылка может не содержать HTTP-протокол , т.е. необходима еще одна проверка, определяющая наличие необходимого протокола у ссылки, например, ssh:// или mailto:.
    • Функция работает только с ASCII-ссылками, таким образом, интернациональные доменные имена (содержащие не-ASCII символы) не пройдут проверку.
    • Доменная зона не проверяется на реальность, так что адрес вида [email protected] пройдет валидацию (привет зонам верхнего уровня аля .yandex).

    Примеры

     [email protected]', FILTER_VALIDATE_EMAIL); // [email protected] filter_var('d#fh$df%[email protected]', FILTER_VALIDATE_EMAIL); // d#fh$df%[email protected] то есть верно! filter_var('[email protected]', FILTER_VALIDATE_EMAIL); // [email protected] то есть верно! filter_var('имя-на-русском@сайтец.рф', FILTER_VALIDATE_EMAIL); // false filter_var('@site.b', FILTER_VALIDATE_EMAIL); // false // FILTER_VALIDATE_FLOAT filter_var(1, FILTER_VALIDATE_FLOAT); // 1 filter_var(0, FILTER_VALIDATE_FLOAT); // 0 filter_var(1.1, FILTER_VALIDATE_FLOAT); // 1.1 filter_var(true, FILTER_VALIDATE_FLOAT); // 1 filter_var( '1,1', FILTER_VALIDATE_FLOAT, array('options' => array('decimal' => ',')) ); // 1.1 filter_var('1,1', FILTER_VALIDATE_FLOAT); // false filter_var('1,000,000', FILTER_VALIDATE_FLOAT); // false filter_var('1,000,000', FILTER_VALIDATE_FLOAT, FILTER_FLAG_ALLOW_THOUSAND); // 1000000 // FILTER_VALIDATE_INT filter_var(1, FILTER_VALIDATE_INT); // 1 filter_var(0, FILTER_VALIDATE_INT); // 0 filter_var(true, FILTER_VALIDATE_INT); // 1 filter_var('3', FILTER_VALIDATE_INT); // 3 filter_var('3.2', FILTER_VALIDATE_INT); // false filter_var( 22, FILTER_VALIDATE_INT, array('options' => array('min_range' => 30)) ); // false filter_var( 32, FILTER_VALIDATE_INT, array('options' => array('min_range' => 30)) ); // 32 // FILTER_FLAG_ALLOW_OCTAL filter_var(032, FILTER_VALIDATE_INT, FILTER_FLAG_ALLOW_OCTAL); // 26 // FILTER_FLAG_ALLOW_HEX filter_var(0x32, FILTER_VALIDATE_INT, FILTER_FLAG_ALLOW_HEX); // 50 // FILTER_VALIDATE_IP filter_var($_SERVER['REMOTE_ADDR'], FILTER_VALIDATE_IP); // 127.0.0.1 filter_var('10.0.0.0', FILTER_VALIDATE_IP); // 10.0.0.0 // FILTER_FLAG_IPV6 filter_var('10.0.0.0', FILTER_VALIDATE_IP, FILTER_FLAG_IPV6); // false filter_var( '2001:0db8:11a3:09d7:1f34:8a2e:07a0:765d', FILTER_VALIDATE_IP, FILTER_FLAG_IPV6 ); // 2001:0db8:11a3:09d7:1f34:8a2e:07a0:765d // FILTER_FLAG_NO_PRIV_RANGE filter_var('10.0.0.0', FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE); // false filter_var('33.35.73.255', FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE); // 33.35.73.255 // FILTER_FLAG_NO_RES_RANGE filter_var('0.0.0.0', FILTER_VALIDATE_IP, FILTER_FLAG_NO_RES_RANGE); // false filter_var('10.0.0.0', FILTER_VALIDATE_IP, FILTER_FLAG_NO_RES_RANGE); // 10.0.0.0 // FILTER_VALIDATE_REGEXP filter_var( 'hello world', FILTER_VALIDATE_REGEXP, array('options'=>array('regexp'=>'/^h/is')) ); // hello world filter_var( 'world hello', FILTER_VALIDATE_REGEXP, array('options'=>array('regexp'=>'/^h/is')) ); // false filter_var( 'hello world', FILTER_VALIDATE_REGEXP, array('options'=>array('regexp'=>'/2+/is')) ); // false filter_var( '22 543 24', FILTER_VALIDATE_REGEXP, array('options'=>array('regexp'=>'/4+/is')) ); // 22 543 24 // FILTER_VALIDATE_URL filter_var('http://somesite.com', FILTER_VALIDATE_URL); // http://somesite.com filter_var('http://какой-то-сайт.рф', FILTER_VALIDATE_URL); // false filter_var('http://#%$%#^^.com', FILTER_VALIDATE_URL); // false filter_var('somesite.com', FILTER_VALIDATE_URL); // false filter_var('torrent://somesite.com', FILTER_VALIDATE_URL); // torrent://somesite.com // FILTER_FLAG_PATH_REQUIRED filter_var( 'http://somesite.com', FILTER_VALIDATE_URL, FILTER_FLAG_PATH_REQUIRED ); // false filter_var( 'http://somesite.com/test', FILTER_VALIDATE_URL, FILTER_FLAG_PATH_REQUIRED ); // http://somesite.com/test // FILTER_FLAG_QUERY_REQUIRED filter_var( 'http://somesite.com', FILTER_VALIDATE_URL, FILTER_FLAG_QUERY_REQUIRED ); // false filter_var( 'http://somesite.com?test', FILTER_VALIDATE_URL, FILTER_FLAG_QUERY_REQUIRED ); // http://somesite.com?test // FILTER_FLAG_PATH_REQUIRED | FILTER_FLAG_QUERY_REQUIRED filter_var( 'http://somesite.com/test?test', FILTER_VALIDATE_URL, FILTER_FLAG_PATH_REQUIRED | FILTER_FLAG_QUERY_REQUIRED ); // http://somesite.com?test ?> 

    Источник

Оцените статью