Here is how to use multiple flags (for those who learn better by example, like me):
<?php
echo "|asdf".chr(9).chr(128)."_123|";
echo "\n";
// "bitwise conjunction" means logic OR / bitwise |
echo filter_var("|asdf".chr(9).chr(128)."_123\n|" ,FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW | FILTER_FLAG_STRIP_HIGH);
/*
Results:
|asdf �_123|
|asdf_123|
*/
?>
filter_var
(PHP 5 >= 5.2.0, PECL filter:0.11.0)
filter_var — Filtra una variable con un filtro específico
Lista de parámetros
- variable
-
Valor a filtrar, las matrices son filtradas recursivamente.
- filtro
-
ID de un filtro a usar. Su valor predeterminado es FILTER_SANITIZE_STRING.
- opciones
-
Una matriz asociativa de opciones o una disyunción a nivel de bits de banderas. Si el filtro acepta opciones, las banderas pueden definirse en el campo "flags" de la matriz. Para el filtro "callback", debe pasarse un valor tipo callback.
Valores retornados
Devuelve los datos filtrados, o FALSE si el filtro falla.
Ejemplos
Example #1 Un ejemplo de filter_var()
<?php
var_dump(filter_var('roberto@example.com', FILTER_VALIDATE_EMAIL));
var_dump(filter_var('example.com', FILTER_VALIDATE_URL, FILTER_FLAG_SCHEME_REQUIRED));
?>
El resultado del ejemplo seria:
string(15) "roberto@example.com" bool(false)
Ver también
- filter_var_array()
- filter_input()
- filter_input_array()
- information about the callback type
filter_var
dale dot liszka at gmail dot com
09-Jul-2008 07:15
09-Jul-2008 07:15
dale dot liszka at gmail dot com
09-Jul-2008 06:54
09-Jul-2008 06:54
Using the FILTER_CALLBACK requires an array to be passed as the options:
<?php
function toDash($x){
return str_replace("_","-",$x);
}
echo filter_var("asdf_123",FILTER_CALLBACK,array("options"=>"toDash"));
// returns 'asdf-123'
?>
John
26-Jul-2007 09:35
26-Jul-2007 09:35
I managed to get this to work with PHP 5.1.6 on CentOS 5 with minor difficulty.
1) Download the PECL filter package
2) Extract the tarball
3) phpize the directory
4) ./configure
5) make
6) filter-0.11.0/logical_filters.c:25:31: error: ext/pcre/php_pcre.h: No such file or directory
7) find / -name php_pcre.h
8) Make sure php-devel is installed
9) Edit filter-0.11.0/logical_filters.c and replace "ext/pcre/php_pcre.h" with the absolute path of php_pcre.h
10) make
11) make install
12) add "extension=filter.so" to php.ini
13) Restart Apache
menic [monkey] o2 . pl
25-May-2007 07:46
25-May-2007 07:46
I dont know why, but this function doesn't work properly with array as $variable. To make it work I suggest to use foreach, and filter each value in this way.
