ホームページ > バックエンド開発 > PHPチュートリアル > 一般的な電子メール、IP、変数配列などをフィルタリングできる PHP フィルタ関数ライブラリ (変数と型に関連する拡張機能)。

一般的な電子メール、IP、変数配列などをフィルタリングできる PHP フィルタ関数ライブラリ (変数と型に関連する拡張機能)。

WBOY
リリース: 2016-06-13 13:02:10
オリジナル
903 人が閲覧しました

php フィルター関数数库 (变量と種類に関連する拡張)、常用邮件、IP、变量数組などを通過できます

?

フィルター扩展库简介

?

この拡張機能は、データを検証またはサニタイズすることでデータをフィルタリングします。 これは、データ ソースに未知の (または外部の) 情報が含まれている場合に特に便利です。 ユーザーが指定した入力などのデータ。たとえば、このデータは HTML から取得される可能性があります。 形状。

フィルタリングには、検証サニタイゼーションの 2 つの主なタイプがあります。

検証 データが特定の条件を満たしているかどうかを検証またはチェックするために使用されます。のために たとえば、FILTER_VALIDATE_EMAIL を渡すと、 データが有効な電子メール アドレスであるかどうかを判断しますが、データは変更されません 自体。

消毒 データをサニタイズするため、不要な文字を削除してデータが変更される可能性があります。のために たとえば、FILTER_SANITIZE_EMAIL を渡すと、 電子メール アドレスに含めるには不適切な文字を削除します。それ データは検証されません。

Flags は、オプションで両方で使用されます。 必要に応じて動作を調整するための検証とサニタイズ。例えば、 FILTER_FLAG_PATH_REQUIRED を通過中に URL をフィルタリングすると、 パス (http://example.org/foo/foo など) が必要です プレゼント。

?

この拡張フィルタ データは、ユーザーが提供する入力など、データ ソースに未知の (または外来の) データが含まれている場合に特に役立ちます。フィルタリング:テストおよびデータ消毒。例えば、フィルタで電​​子デバイスをテストすることによって、データが有効な電子デバイスであるかどうかを確認しますが、データは変更されません。本身。 将処理されたデータを消去することにより、受け入れられない人物を削除することによって改変することができる。例えば、電子デバイスのフィルタリングによって、電子デバイスに含まれない文字を削除する。選択的に使用必要に応じて、認証とデータ消毒が実行されます。

?

过滤的関数数列表:

関数数名 機能

filter_list 列表のサポートされているすべての列表を返す

filter_id 过滤器 ID - ある名前に属する过滤器 ID を返します

filter_has_var 过滤器已经var -检查如果变量指定型の存在

filter_input 过滤入力 -- 特定の外部量の名前を取得し、選択的に選択します

filter_input_array 过滤输受信组――外部变量和选择性地过滤它们

filter_var filter_var过滤变量指定の过フィルターを使用します

filter_var_array 过滤器変数数组――多数の变量と选择性地过滤它们を取得

?

?

?

?

関数数例:

フィルターリスト

?

<?php
print_r(filter_list());
?> 

以上例程的输出类似于:

Array
(
    [0] => int
    [1] => boolean
    [2] => float
    [3] => validate_regexp
    [4] => validate_url
    [5] => validate_email
    [6] => validate_ip
    [7] => string
    [8] => stripped
    [9] => encoded
    [10] => special_chars
    [11] => unsafe_raw
    [12] => email
    [13] => url
    [14] => number_int
    [15] => number_float
    [16] => magic_quotes
    [17] => callback
)
ログイン後にコピー
?

?filter_listとfilter_idの組み合わせ

?

<?php
echo "<pre class="brush:php;toolbar:false">";
print_r(filter_list());
echo "
"; foreach (filter_list() as $key => $value) { echo "
".$key."=".$value.'='.filter_id($value); } ?> 0=int=257 1=boolean=258 2=float=259 3=validate_regexp=272 4=validate_url=273 5=validate_email=274 6=validate_ip=275 7=string=513 8=stripped=513 9=encoded=514 10=special_chars=515 11=unsafe_raw=516 12=email=517 13=url=518 14=number_int=519 15=number_float=520 16=magic_quotes=521 17=callback=1024
ログイン後にコピー
?

?filter_id

?

<?php 
$filters = filter_list(); 
foreach($filters as $filter_name) { 
    echo $filter_name .": ".filter_id($filter_name) ."<br>"; 
} 
?> 
Will result in: 
boolean: 258 
float: 259 
validate_regexp: 272 
validate_url: 273 
validate_email: 274 
validate_ip: 275 
string: 513 
stripped: 513 
encoded: 514 
special_chars: 515 
unsafe_raw: 516 
email: 517 
url: 518 
number_int: 519 
number_float: 520 
magic_quotes: 521 
callback: 1024 
ログイン後にコピー
?

?

filter_has_var 関数数效率:

注意: filter_has_var() は少し複雑です isset()

より速い

翻訳:filter_has_var関数数比isset()快一点

?

Please note that the function does not check the live array, it actually checks the content received by php:

翻訳: 请注意、この関数には数グループが含まれており、PHP が受信したコンテンツのみが含まれています

?

?

<?php
$_GET['test'] = 1;
echo filter_has_var(INPUT_GET, 'test') ? 'Yes' : 'No';
?>

would say "No", unless the parameter was actually in the querystring.

Also, if the input var is empty, it will say Yes.
ログイン後にコピー

?

?

?

?

验证范例1(验证邮箱):

?

<?php
$email_a = 'joe@example.com';
$email_b = 'bogus';

if (filter_var($email_a, FILTER_VALIDATE_EMAIL)) {
    echo "This (email_a) email address is considered valid.";
}
if (filter_var($email_b, FILTER_VALIDATE_EMAIL)) {
    echo "This (email_b) email address is considered valid.";
}
?> 
ログイン後にコピー
?以上程序出力:

?

This (email_a) email address is considered valid.
ログイン後にコピー
?

验证范例2(验证IP)

?

<?php
$ip_a = '127.0.0.1';
$ip_b = '42.42';

if (filter_var($ip_a, FILTER_VALIDATE_IP)) {
    echo "This (ip_a) IP address is considered valid.";
}
if (filter_var($ip_b, FILTER_VALIDATE_IP)) {
    echo "This (ip_b) IP address is considered valid.";
}
?> 
ログイン後にコピー
?以上程序出力:

?

This (ip_a) IP address is considered valid.
ログイン後にコピー
?

验证范例3(通过选项来过滤变量):

?

<?php
$int_a = '1';
$int_b = '-1';
$int_c = '4';
$options = array(
    'options' => array(
                      'min_range' => 0,
                      'max_range' => 3,
                      )
);
if (filter_var($int_a, FILTER_VALIDATE_INT, $options) !== FALSE) {
    echo "This (int_a) integer is considered valid (between 0 and 3).\n";
}
if (filter_var($int_b, FILTER_VALIDATE_INT, $options) !== FALSE) {
    echo "This (int_b) integer is considered valid (between 0 and 3).\n";
}
if (filter_var($int_c, FILTER_VALIDATE_INT, $options) !== FALSE) {
    echo "This (int_c) integer is considered valid (between 0 and 3).\n";
}

$options['options']['default'] = 1;
if (($int_c = filter_var($int_c, FILTER_VALIDATE_INT, $options)) !== FALSE) {
    echo "This (int_c) integer is considered valid (between 0 and 3) and is $int_c.";
}
?> 
ログイン後にコピー
?以上程序会出:

?

This (int_a) integer is considered valid (between 0 and 3).
This (int_c) integer is considered valid (between 0 and 3) and is 1.
ログイン後にコピー
?

消失有害文字并および验证例 1:

?

<?php
$a = 'joe@example.org';
$b = 'bogus - at - example dot org';
$c = '(bogus@example.org)';

$sanitized_a = filter_var($a, FILTER_SANITIZE_EMAIL);
if (filter_var($sanitized_a, FILTER_VALIDATE_EMAIL)) {
    echo "This (a) sanitized email address is considered valid.\n";
}

$sanitized_b = filter_var($b, FILTER_SANITIZE_EMAIL);
if (filter_var($sanitized_b, FILTER_VALIDATE_EMAIL)) {
    echo "This sanitized email address is considered valid.";
} else {
    echo "This (b) sanitized email address is considered invalid.\n";
}

$sanitized_c = filter_var($c, FILTER_SANITIZE_EMAIL);
if (filter_var($sanitized_c, FILTER_VALIDATE_EMAIL)) {
    echo "This (c) sanitized email address is considered valid.\n";
    echo "Before: $c\n";
    echo "After:  $sanitized_c\n";    
}
?> 
ログイン後にコピー
?以上程序会出:

?

This (a) sanitized email address is considered valid.
This (b) sanitized email address is considered invalid.
This (c) sanitized email address is considered valid.
Before: (bogus@example.org)
After: bogus@example.org
ログイン後にコピー
?

下面介绍一下filter_input,摘自百度百科:

?

定义和用法

filter_input() 函数从脚本外部获取输入,并进行过滤。

  本函数用于对来自非安全来源的变量进行验证,比如用户的输入。

  本函数可从各种来源获取输入:

  INPUT_GET

  INPUT_POST

  INPUT_COOKIE

  INPUT_ENV

  INPUT_SERVER

  INPUT_SESSION (Not yet implemented)

  INPUT_REQUEST (Not yet implemented)

  如果成功,则返回被过滤的数据,如果失败,则返回 false,如果?variable?参数未设置,则返回 NULL。

语法

  filter_input(input_type, variable, filter, options)

参数 描述
input_type 必需。规定输入类型。参见上面的列表中可能的类型。
variable 规定要过滤的变量。
filter 可选。规定要使用的过滤器的 ID。默认是 FILTER_SANITIZE_STRING。?
请参见完整的 PHP Filter 函数参考手册,获得可能的过滤器。?
过滤器 ID 可以是 ID 名称 (比如 FILTER_VALIDATE_EMAIL),或 ID 号(比如 274)。
options 规定包含标志/选项的数组。检查每个过滤器可能的标志和选项。

例子

  在本例中,我们使用 filter_input() 函数来过滤一个 POST 变量。所接受的 POST 变量是合法的 e-mail 地址。

  

?

  { echo "E-Mail is not valid"; }
  else
  { echo "E-Mail is valid"; }
  ?>
  输出类似:
  E-Mail is valid
ログイン後にコピー
?

过滤和验证字串的过滤类型详细请见PHP官方手册

写这篇内容的时候发现以前有朋友写过了,给个链接可以查看一下更多?http://blog.johnsonlu.org/phpfilter/

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート