Some notes on usage:
http://sn.im/php_filter
filter_var
(PHP 5 >= 5.2.0)
filter_var — 指定したフィルタでデータをフィルタリングする
パラメータ
- variable
-
フィルタリングする値。
- filter
-
使用するフィルタの ID。 デフォルトは FILTER_SANITIZE_STRING です。
- options
-
オプションあるいはフラグの論理和の連想配列。 オプションを指定可能なフィルタの場合、この配列の "flags" フィールドにフラグを指定します。 "callback" フィルタの場合は、callback 型を渡さなければなりません。
返り値
フィルタリングされたデータ、あるいは処理に失敗した場合に FALSE を返します。
例
例1 filter_var() の例
<?php
var_dump(filter_var('bob@example.com', FILTER_VALIDATE_EMAIL));
var_dump(filter_var('example.com', FILTER_VALIDATE_URL, FILTER_FLAG_SCHEME_REQUIRED));
?>
上の例の出力は以下となります。
string(15) "bob@example.com" bool(false)
参考
- filter_var_array() - 複数の変数を受け取り、オプションでそれらをフィルタリングする
- filter_input() - 指定した名前の変数を外部から受け取り、オプションでそれをフィルタリングする
- filter_input_array() - 外部から変数を受け取り、オプションでそれらをフィルタリングする
- callback 型に関する情報
filter_var
dyer85 at gmail dot com
03-Nov-2008 12:00
03-Nov-2008 12:00
Note that when using FILTER_VALIDATE_INT along with the FILTER_FLAG_ALLOW_HEX flag, the string "2f", for example, is not validated successfully, because you must use the "0x" prefix, otherwise, it treats the data as base 10.
The range options are also smart enough to recognize when the boundaries are exceeded in different bases.
Here's an example:
<?php
$foo = '256';
$bar = '0x100';
var_dump(validate_int($foo)); // false, too large
var_dump(validate_int($bar)); // false, too large
function validate_int($input)
{
return filter_var(
$input,
FILTER_VALIDATE_INT,
// We must pass an associative array
// to include the range check options.
array(
'flags' => FILTER_FLAG_ALLOW_HEX,
'options' => array('min_range' => 1, 'max_range' => 0xff)
)
);
}
?>
visseraj at gmail dot com
28-Aug-2008 08:31
28-Aug-2008 08:31
Here are the other possible flags that you can use:
http://us3.php.net/manual/hu/ref.filter.php
dale dot liszka at gmail dot com
09-Jul-2008 08:15
09-Jul-2008 08:15
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|
*/
?>
dale dot liszka at gmail dot com
09-Jul-2008 07:54
09-Jul-2008 07: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 10:35
26-Jul-2007 10: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
