فیلترهای پیشرفته (Filters Advanced)

فیلترهای پیشرفته PHP — filter_input، filter_var_array، filter_list و اعتبارسنجی داده‌های پیچیده

filter_input — فیلتر کردن ورودی

برای فیلتر کردن داده‌های $_GET، $_POST، $_COOKIE و $_SERVER:

<?php
// فیلتر کردن GET
$email = filter_input(INPUT_GET, "email", FILTER_VALIDATE_EMAIL);

// فیلتر کردن POST
$age = filter_input(INPUT_POST, "age", FILTER_VALIDATE_INT);

// پاک‌سازی
$name = filter_input(INPUT_POST, "name", FILTER_SANITIZE_STRING);
?>

انواع INPUT

ثابتتوضیح
INPUT_GETداده‌های $_GET
INPUT_POSTداده‌های $_POST
INPUT_COOKIEداده‌های $_COOKIE
INPUT_SERVERداده‌های $_SERVER
INPUT_ENVداده‌های $_ENV

filter_var_array — فیلتر کردن آرایه

<?php
$data = [
    "name" => "علی",
    "email" => "ali@test.com",
    "age" => "25",
];

$filters = [
    "name" => FILTER_SANITIZE_STRING,
    "email" => FILTER_VALIDATE_EMAIL,
    "age" => [
        "filter" => FILTER_VALIDATE_INT,
        "options" => ["min_range" => 18, "max_range" => 120]
    ],
];

$result = filter_var_array($data, $filters);
// ["name" => "علی", "email" => "ali@test.com", "age" => 25]
?>

filter_input_array — فیلتر کردن همه ورودی‌ها

<?php
$filters = [
    "name" => FILTER_SANITIZE_STRING,
    "email" => FILTER_VALIDATE_EMAIL,
    "age" => FILTER_VALIDATE_INT,
];

$input = filter_input_array(INPUT_POST, $filters);
?>

گزینه‌های فیلتر (Options)

<?php
// عدد با محدوده
$options = [
    "options" => [
        "min_range" => 1,
        "max_range" => 100,
        "default" => 50,  // مقدار پیش‌فرض اگر نامعتبر باشد
    ]
];

$score = filter_var($_POST["score"], FILTER_VALIDATE_INT, $options);
?>

پرچم‌های فیلتر (Flags)

پرچمتوضیح
FILTER_FLAG_ALLOW_HEXاجازه اعداد هگز
FILTER_FLAG_ALLOW_OCTALاجازه اعداد هشت‌هشتی
FILTER_FLAG_ALLOW_THOUSANDاجازه کاما در اعداد
FILTER_FLAG_ALLOW_FRACTIONاجازه اعشار
FILTER_FLAG_IPV4فقط IPv4
FILTER_FLAG_IPV6فقط IPv6
FILTER_FLAG_EMAIL_UNICODEاجازه یونیکد در ایمیل

filter_list — فهرست همه فیلترها

<?php
$filters = filter_list();
foreach ($filters as $filter) {
    echo $filter . " (ID: " . filter_id($filter) . ")<br>";
}
?>

فیلترهای اعتبارسنجی کامل

فیلترتوضیح
FILTER_VALIDATE_BOOLEANبولین (true/false/1/0/yes/no)
FILTER_VALIDATE_EMAILایمیل معتبر
FILTER_VALIDATE_FLOATعدد اعشاری
FILTER_VALIDATE_INTعدد صحیح
FILTER_VALIDATE_IPآدرس IP
FILTER_VALIDATE_MACآدرس MAC
FILTER_VALIDATE_REGEXPعبارت منظم
FILTER_VALIDATE_URLURL معتبر

فیلترهای پاک‌سازی کامل

فیلترتوضیح
FILTER_SANITIZE_EMAILحذف کاراکترهای نامعتبر ایمیل
FILTER_SANITIZE_ENCODEDURL-encode
FILTER_SANITIZE_MAGIC_QUOTESافزودن اسلش
FILTER_SANITIZE_NUMBER_FLOATفقط عدد و اعشار
FILTER_SANITIZE_NUMBER_INTفقط عدد و علامت
FILTER_SANITIZE_SPECIAL_CHARSHTML-encode کاراکترهای خاص
FILTER_SANITIZE_FULL_SPECIAL_CHARSHTML-encode کامل
FILTER_SANITIZE_URLحذف کاراکترهای نامعتبر URL

اعتبارسنجی با RegEx

<?php
$pattern = "/^09\d{9}$/"; // موبایل ایران

$phone = "09123456789";
$valid = filter_var($phone, FILTER_VALIDATE_REGEXP, [
    "options" => ["regexp" => $pattern]
]);
?>

این مبحث بخشی از دوره آموزش کامل PHP است.

ابزارهای مرتبط