Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> PHP

PHP filter_input() में Filter Flags को AND/OR से Combine करना


PHP के filter_input() में multiple filter flags को combine करने के तरीके।

समस्या

<?php
// यह काम नहीं करता - flags bitwise OR नहीं हैं
$value = filter_input(INPUT_POST, 'field', FILTER_SANITIZE_STRING, 
    FILTER_REQUIRE_ARRAY | FILTER_NULL_ON_FAILURE); // Wrong!

समाधान 1: Array के लिए Conditional Flag

<?php
$value = filter_input(INPUT_POST, 'field', FILTER_DEFAULT, 
    is_array($_POST['field'] ?? null) ? FILTER_REQUIRE_ARRAY : null);

समाधान 2: Custom Filter Function (Flexible)

<?php
function filterInputArray($name, $filter = FILTER_DEFAULT, $flags = 0) {
    $value = filter_input(INPUT_POST, $name, $filter, $flags);
    
    // यदि array है और FILTER_REQUIRE_ARRAY नहीं दिया गया
    if (is_array($value) && !($flags & FILTER_REQUIRE_ARRAY)) {
        // Recursively filter each element
        return array_map(function($v) use ($filter, $flags) {
            return filter_var($v, $filter, $flags);
        }, $value);
    }
    
    return $value;
}

// उपयोग
$emails = filterInputArray('emails', FILTER_VALIDATE_EMAIL);
$names = filterInputArray('names', FILTER_SANITIZE_STRING);

समाधान 3: Loop Through All POST Data

<?php
$filtered = [];

foreach ($_POST as $key => $value) {
    if (is_array($value)) {
        // Array fields: apply array filter
        $filtered[$key] = filter_input(INPUT_POST, $key, FILTER_DEFAULT, 
            FILTER_REQUIRE_ARRAY | FILTER_REQUIRE_SCALAR);
    } else {
        // Scalar fields: apply scalar filter
        $filtered[$key] = filter_input(INPUT_POST, $key, FILTER_SANITIZE_STRING);
    }
}

// Specific field types के लिए
$rules = [
    'email' => [FILTER_VALIDATE_EMAIL],
    'age' => [FILTER_VALIDATE_INT, ['min_range' => 1, 'max_range' => 120]],
    'tags' => [FILTER_DEFAULT, FILTER_REQUIRE_ARRAY],
    'bio' => [FILTER_SANITIZE_STRING],
];

$filtered = [];
foreach ($rules as $field => $rule) {
    $filter = $rule[0];
    $options = $rule[1] ?? [];
    $flags = $rule[2] ?? 0;
    
    $filtered[$field] = filter_input(INPUT_POST, $field, $filter, $flags, $options);
}

समाधान 4: filter_input_array() - Bulk Filtering

<?php
$filters = [
    'name' => FILTER_SANITIZE_STRING,
    'email' => FILTER_VALIDATE_EMAIL,
    'age' => [
        'filter' => FILTER_VALIDATE_INT,
        'options' => ['min_range' => 1, 'max_range' => 150]
    ],
    'tags' => [
        'filter' => FILTER_DEFAULT,
        'flags' => FILTER_REQUIRE_ARRAY
    ],
    'subscribe' => FILTER_VALIDATE_BOOLEAN,
];

$result = filter_input_array(INPUT_POST, $filters);

// Result structure:
// [
//     'name' => 'filtered string',
//     'email' => 'valid@email.com' or false,
//     'age' => 25 or false,
//     'tags' => ['tag1', 'tag2'] or false,
//     'subscribe' => true/false
// ]

Flag Constants Reference

ConstantValueDescription
FILTER_REQUIRE_ARRAY1Input को array के रूप में require करता है
FILTER_FORCE_ARRAY2Scalar values को array में wrap करता है
FILTER_REQUIRE_SCALAR4Array input पर false return करता है
FILTER_NULL_ON_FAILURE8Failure पर false के बजाय null return करता है

Bitwise Combination (जब applicable हो)

<?php
// ये flags bitwise OR के साथ combine किए जा सकते हैं:
$flags = FILTER_REQUIRE_ARRAY | FILTER_NULL_ON_FAILURE; // = 1 | 8 = 9

$value = filter_input(INPUT_POST, 'tags', FILTER_DEFAULT, $flags);

// लेकिन FILTER_REQUIRE_ARRAY और FILTER_FORCE_ARRAY mutually exclusive हैं
  1. ProtonMail में फ़ोल्डर्स और लेबल्स से ईमेल फ़िल्टर कैसे करें ProtonMail में फ़ोल्डर्स और लेबल्स से ईमेल फ़िल्टर कैसे करें

    अच्छी इंटरनेट स्वच्छता के लिए एक ईमेल इनबॉक्स की आवश्यकता होती है जो निजी और व्यवस्थित रहे। ProtonMail डिफ़ॉल्ट रूप से गोपनीयता प्रदान करता है, लेकिन हम आपको दिखाएंगे कि लेबल, फ़ोल्डर, और एक शक्तिशाली फ़िल्टर फ़ंक्शन के साथ अपने इनबॉक्स को कैसे व्यवस्थित रखें। ProtonMail: एक सुरक्षित ईमेल सेवा Prot

  1. - macOS Mojave 10.14 पर OneDrive सिंक समस्याओं को हल करना: सिद्ध सुधार और सर्वोत्तम अभ्यास

    Mojave 10.14 के कुछ उपयोगकर्ताओं ने शायद अब तक महसूस कर लिया होगा कि OneDrive वह कुशल और निर्दोष उपकरण नहीं है जिसके बारे में वे सोच रहे थे। ऐसा इसलिए है क्योंकि जब कार्य डेटा और फ़ाइलों को साझा करने की बात आती है, तो यह आमतौर पर उन्हें विभिन्न सिंक्रनाइज़ेशन ऑपरेशंस के बीच में छोड़ देता है।यह समस्य

  1. एक्सेल में रंग और टेक्स्ट द्वारा एक साथ फ़िल्टर करें - सरल चरण-दर-चरण गाइड एक्सेल में रंग और टेक्स्ट द्वारा एक साथ फ़िल्टर करें - सरल चरण-दर-चरण गाइड

    यह लेख दर्शाता है कि एक्सेल में रंग और टेक्स्ट द्वारा कैसे फ़िल्टर करें। आप एक्सेल में रंग द्वारा फ़िल्टर टेक्स्ट को आसानी से कर सकते हैं। लेकिन दोनों मानदंडों को एक साथ करने का कोई सीधा तरीका नहीं है। हम इस लेख में ऐसा करने का एक तरीका दिखाएंगे। चरण त्वरित और पालन करने में आसान हैं। तो लेख पर एक त्