在本 PHP 教程中,您将学习有关 PHP 中不同类型过滤器的所有知识。我们将详细讨论过滤器的类型和各种过滤器函数。
PHP Filter 是一个数据过滤扩展,可以对数据进行清理或验证。它对于网站的安全至关重要,特别是当数据来自未知或外部来源时,例如用户提供的信息。例如,来自 HTML 表单的数据。
验证用于确定数据是否符合特定标准。例如,使用 FILTER_VALIDATE_EMAIL 将检查给定数据是否为有效电子邮件,通过使用验证,它不会影响指定数据。
清理不同于验证,清理将清理给定数据以确保没有不想要的字符存在,方法是删除或修改数据。例如,使用 FILTER_SANITIZE_URL 将删除所有不适用于 URL 地址的字符。但是,它不验证数据。
通过使用过滤器函数,可以过滤来自不安全源的数据。
语法
filter_var(var, filtername, options)
示例
<?php
$email = "[email protected]";
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo ("$email is a valid email address");
} else {
echo ("$email is not a valid email address");
}
?>
输出
[email protected] is a valid email address
语法
filter_var_array(data_array, args, add_empty)
示例
<?php
$details = array(
'username' =--> 'johndoe',
'age' => '23',
'email' => '[email protected]',
);
$filtere_data = filter_var_array($details);
var_dump($filtere_data);
?>
输出
array(3) {
["username"]=>
string(7) "johndoe"
["age"]=>
string(2) "23"
["email"]=>
string(16) "[email protected]"
}
语法
filter_has_var(type, variable)
示例
<?php
if (!filter_has_var(INPUT_GET, "email")) {
echo ("Email is available...");
} else {
echo ("Email is not available...");
}
?>
输出
Email is not available...
在上面的示例中,检查了通过 GET 方法从表单传递的值。要检查的输入类型。可以是以下之一
语法
filter_id(filter_name)
示例
<?php
echo (filter_id("validate_url"));
echo "\n";
echo (filter_id("validate_email"));
?>
输出
273 274
语法
filter_list()
示例
<?php
print_r(filter_list());
?>
输出
语法
filter_input(type, variable, filter, options)
示例
!DOCTYPE html>
<html>
<body><
<form method="get" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>">
E-mail: <input type="text" name="email">
<input type="submit" name="submit" value="Submit">
</form>
<?php
if (isset($_GET["email"])) {
if (!filter_input(INPUT_GET, "email", FILTER_VALIDATE_EMAIL) === false) {
echo ("The email is valid");
} else {
echo ("The email is not valid");
}
}
?>
</body>
</html>
输出
语法
filter_input_array(type, definition, add_empty)
示例
<html>
<body>
<form method="post" action=" <?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?> ">
Name: <input type="text" name="name">
Age: <input type="text" name="age">
E-mail: <input type="text" name="email">
<input type="submit" name="submit" value="Submit">
</form>
<?php
$filters = array(
"name" => array(
"filter" => FILTER_CALLBACK,
"flags" => FILTER_FORCE_ARRAY,
"options" => "ucwords"
),
"age" => array(
"filter" => FILTER_VALIDATE_INT,
"options" => array("min_range" => 1, "max_range" => 120)
),
"email" => FILTER_VALIDATE_EMAIL
);
print_r(filter_input_array(INPUT_POST, $filters));
?>
</body>
</html>
输出
以下是一些预定义的过滤器常量
1. FILTER_VALIDATE_BOOLEAN: 用于验证布尔数据
2. FILTER_VALIDATE_INT: 用于验证整数数据
3. FILTER_VALIDATE_FLOAT: 用于验证浮点数据
4. FILTER_VALIDATE_REGEXP: 用于验证正则表达式
5. FILTER_VALIDATE_IP: 用于验证 IP 地址
6. FILTER_VALIDATE_EMAIL: 用于验证电子邮件地址
7. FILTER_VALIDATE_URL: 用于验证 URL
1. FILTER_SANITIZE_EMAIL: 用于从电子邮件地址中删除所有非法字符
2. FILTER_SANITIZE_ENCODED: 用于删除/编码特殊字符
3. FILTER_SANITIZE_MAGIC_QUOTES: 用于应用 addslashes() 函数
4. FILTER_SANITIZE_NUMBER_FLOAT: 用于删除除数字、+- 和可选的小数点之外的所有字符。
5. FILTER_SANITIZE_NUMBER_INT: 用于删除除数字和 + - 之外的所有字符
6. FILTER_SANITIZE_SPECIAL_CHARS: 用于删除特殊字符
7. FILTER_SANITIZE_FULL_SPECIAL_CHARS: 用于编码可能通过 FILTER_FLAG_NO_ENCODE_QUOTES 禁用的引号。
8. FILTER_SANITIZE_STRING: 用于从字符串中删除标签/特殊字符
9. FILTER_SANITIZE_STRIPPED: 用作 FILTER_SANITIZE_STRING 的别名
10. FILTER_SANITIZE_URL: 用于从 URL 中删除所有非法字符
1. FILTER_UNSAFE_RAW: 用于不做任何操作,可选地删除/编码特殊字符
2. FILTER_CALLBACK: 用于调用用户定义的函数来过滤数据