PHP Filters Advanced
In this page:
$result = filter_var_array($data, ["key" => FILTER_VALIDATE_EMAIL, "key2" => FILTER_VALIDATE_INT]);
$result = filter_var($value, FILTER_CALLBACK, ["options" => "function_name"]);
$result = filter_var($value, FILTER_VALIDATE_INT, FILTER_FLAG_ALLOW_THOUSAND);
filter_var_array() से पूरा Array Filter करना
filter_var_array($data, $rules) एक call में किसी array की हर key पर एक अलग filter apply करता है, एक $rules array follow करते हुए जो हर key name को उसे इस्तेमाल करने वाले filter में map करता है -- हर single form field के लिए अलग से filter_var() call करने से कहीं ज़्यादा convenient।
उदाहरण: Filtering an Entire Array with filter_var_array()
<?php
// Declare `$data` as an array: `["email" => "[email protected]", "age" => "25"]`
$data = ["email" => "[email protected]", "age" => "25"];
// Declare `$rules` as an array: `["email" => FILTER_VALIDATE_EMAIL, "age" => FILTER_VALIDATE_INT]`
$rules = ["email" => FILTER_VALIDATE_EMAIL, "age" => FILTER_VALIDATE_INT];
// Print a human-readable dump of `filter_var_array($data, $rules)`
print_r(filter_var_array($data, $rules));
?>
Login to try C/C++/Java/PHP code in the editor
FILTER_CALLBACK से एक Custom Filter लिखना
FILTER_CALLBACK आपको validation rule की तरह अपना खुद का function supply करने देता है, उन checks के लिए जिन्हें PHP के built-in filters directly support नहीं करते -- जैसे यह confirm करना कि एक username में सिर्फ letters, numbers, और underscores हैं, या एक value किसी business-specific rule से match करती है।
उदाहरण: Writing a Custom Filter with FILTER_CALLBACK
<?php
// Declare `$username`, set to "alice_99"
$username = "alice_99";
$options = ["options" => function ($value) {
// Return `preg_match('/^\w+$/', $value) ? $value : false` from this function
return preg_match('/^\w+$/', $value) ? $value : false;
}];
// Print a detailed dump (with types) of `filter_var($username, FILTER_CALLBACK, $options)`
var_dump(filter_var($username, FILTER_CALLBACK, $options));
?>
Login to try C/C++/Java/PHP code in the editor
Flags के साथ Filters Fine-Tune करना
कई filters अपने exact behavior adjust करने के लिए additional flags accept करते हैं -- FILTER_FLAG_ALLOW_THOUSAND FILTER_VALIDATE_INT को thousands separators accept करने देता है, और FILTER_NULL_ON_FAILURE एक boolean filter को specifically unrecognized input के लिए null (false के बजाय) return करने के लिए बदल देता है, इसे एक genuine "false" value से अलग करते हुए।
उदाहरण: Fine-Tuning Filters with Flags
<?php
// Print a detailed dump (with types) of `filter_var("1,000", FILTER_VALIDATE_INT, FILTER_FLAG_ALLOW_THOUSAND)`
var_dump(filter_var("1,000", FILTER_VALIDATE_INT, FILTER_FLAG_ALLOW_THOUSAND));
// Print a detailed dump (with types) of `filter_var("maybe", FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE)`
var_dump(filter_var("maybe", FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE));
?>
Login to try C/C++/Java/PHP code in the editor
एक साथ कई Fields Sanitize करना
filter_var_array() sanitization filters के लिए भी काम करता है, सिर्फ validation वालों के लिए नहीं -- एक ही call में submitted fields के पूरे array पर FILTER_SANITIZE_STRING-style cleanup या FILTER_SANITIZE_NUMBER_INT apply करते हुए, एक साथ कई inputs साफ करते हुए।
उदाहरण: Sanitizing Multiple Fields at Once
<?php
// Declare `$data` as an array: `["age" => "25abc", "phone" => "555-1234"]`
$data = ["age" => "25abc", "phone" => "555-1234"];
// Declare `$rules` as an array: `["age" => FILTER_SANITIZE_NUMBER_INT, "phone" => FILTER_SANITIZE_NUMBER_INT]`
$rules = ["age" => FILTER_SANITIZE_NUMBER_INT, "phone" => FILTER_SANITIZE_NUMBER_INT];
// Print a human-readable dump of `filter_var_array($data, $rules)`
print_r(filter_var_array($data, $rules));
?>
Login to try C/C++/Java/PHP code in the editor
सीधे Superglobal Input Filter करना
filter_input(INPUT_GET, "key", $filter) या filter_input(INPUT_POST, "key", $filter) $_GET या $_POST superglobals से सीधे एक value एक step में पढ़ता और filter करता है, बिना raw superglobal array को बिल्कुल छुए -- पढ़ने और फिर अलग से filter करने से थोड़ा safer, ज़्यादा explicit pattern।
उदाहरण: Filtering Superglobal Input Directly
<?php
// Set `$_GET['id']` to "42"
$_GET['id'] = "42";
// Declare `$id`, set to `filter_input(INPUT_GET, "id", FILTER_VALIDATE_INT)`
$id = filter_input(INPUT_GET, "id", FILTER_VALIDATE_INT);
// Print a detailed dump (with types) of `$id`
var_dump($id);
?>
Login to try C/C++/Java/PHP code in the editor
- यह भूल जाना कि filter_var() ज़्यादातर filters के लिए failure पर false return करता है, जो खुद एक valid boolean value है -- हमेशा एक loose truthy check के बजाय === false से compare करें।
- यह realize न करना कि FILTER_VALIDATE_INT और similar filters default रूप से leading/trailing whitespace वाली values reject करते हैं जब तक उपयुक्त flag add न किया जाए।
- एक custom FILTER_CALLBACK function लिखना जो खुद invalid input पर false return नहीं करता, दूसरे filters के follow किए consistent success/failure contract को तोड़ते हुए।
- filter_var_array() एक साथ किसी array की हर value पर filters apply करता है, keys को filter definitions में map करने वाला एक rules array follow करते हुए।
- FILTER_CALLBACK आपको PHP के built-in filters cover न करने वाले rules के लिए अपना खुद का custom validation function supply करने देता है।
- FILTER_FLAG_ALLOW_THOUSAND या FILTER_NULL_ON_FAILURE जैसे filter flags fine-tune करते हैं कि एक filter exactly कैसे behave करता है।
Chapter Quiz — Complete all 8 topics to unlock
0/8 topics done
Complete these topics first: