gridFilter Advanced

จิตติมา รัตนถาวร 640710497

ตัวกรองขั้นสูง หรือ Filter Advanced ในภาษา PHP โดยใช้ฟังก์ชั่น filter_var() ตรวจสอบหรือเปลี่ยนแปลงข้อมูล และในการใช้งานตัวกรองขั้นสูงนี้ จะมีการใช้ options และ flags เพื่อควบคุมการกรองข้อมูลอย่างละเอียด รวมถึงการกำหนดเงื่อนไขพิเศษ เช่น ช่วงของตัวเลข

โครงสร้างของฟังก์ชั่น

filter_var($variable, $filter, $options);
  • $variable : ตัวแปรที่ต้องการกรองข้อมูล

  • $filter : ประเภทของฟิลเตอร์ที่ต้องการใช้ เช่น FILTER_VALIDATE_INT, FILTER_SANITIZE_STRING

  • $options (ตัวเลือกเพิ่มเติม) :ใช้กำหนดเงื่อนไขเพิ่มเติม เช่น ช่วงตัวเลข (min/max)

การใช้ฟิลเตอร์ร่วมกับ Options และFilter Flags

การใช้ฟิลเตอร์ร่วมกับการกำหนด Options

การใช้ฟิลเตอร์ร่วมกับ Options เพื่อกำหนดเงื่อนไขในการกรอง เช่น การกำหนดช่วงค่าของตัวเลข

Code
$int = 122;
$min = 1;
$max = 200;

if (filter_var($int, FILTER_VALIDATE_INT, array("options" => array("min_range"=>$min, "max_range"=>$max))) === false) {
  echo("Variable value is not within the legal range");
} else {
  echo("Variable value is within the legal range");
}

จากโค้ดตัวอย่างนี้ ได้ใช้ฟิลเตอร์ประเภท FILTER_VALIDATE_INT ร่วมกับ Options ที่กำหนดช่วงของตัวเลขที่ต้องการ เพื่อตรวจสอบว่าตัวแปร $int เป็นจำนวนเต็มที่อยู่ในช่วงที่ต้องการหรือไม่ ซึ่งตัวแปร $int มีค่า 122 ดังนั้นจึงได้ผลลัพท์ว่าตัวแปร $int เป็นจำนวนเต็มที่อยู่ในช่วงที่ต้องการ และพิมพ์ผลลัพท์ออกมา

การใช้ฟิลเตอร์ Flag

การใช้ Filter Flag จะช่วยปรับแต่งพฤติกรรมของฟังก์ชันกรองให้ละเอียดและตรงกับความต้องการมากขึ้น เช่น การตรวจสอบรูปแบบของ IP ว่าเป็น IPv4 หรือ IPv6 โดยมีตัวอย่างดังนี้

Filter Flag
Description

FILTER_FLAG_ALLOW_FRACTION

อนุญาตให้ตัวเลขที่ผ่านการกรองมีจุดทศนิยมได้และไม่ลบจุดทศนิยมออก

FILTER_FLAG_ALLOW_THOUSAND

อนุญาตให้ตัวเลขที่มีตัวคั่นหลักพัน (เครื่องหมายจุลภาค ",") ผ่านการกรองโดยไม่ลบเครื่องหมายนี้ออก

FILTER_FLAG_ALLOW_SCIENTIFIC

อนุญาตให้รูปแบบตัวเลขในรูปของเลขยกกำลังผ่านการกรองได้

FILTER_FLAG_STRIP_LOW

ลบอักขระที่มีค่า ASCII ต่ำกว่า 32 ออก

FILTER_FLAG_STRIP_HIGH

ลบอักขระที่มีค่า ASCII มากกว่า 127 ออก

FILTER_FLAG_IPV4

ตรวจสอบว่า IP address นั้นเป็น IPv4 หรือไม่

FILTER_FLAG_IPV6

ตรวจสอบว่า IP address นั้นเป็น IPv6 หรือไม่

FILTER_FLAG_NO_PRIV_RANGE

ตรวจสอบว่า IP ไม่ใช่ private IP address

FILTER_FLAG_NO_RES_RANGE

ตรวจสอบว่า IP ไม่ใช่ reserved IP address

เปรียบเทียบกับภาษา JavaScript / C / Python

เปรียบเทียบกับภาษา JavaScript

ในภาษา JavaScript จะใช้งานฟังก์ชันที่ชื่อว่า Regular Expressions (RegExp) ร่วม string methods เช่น search() และ replace() ซึ่งทำงานคล้างคลึงกันกับ Filter Functions ใน PHP ทั้งสองมีจุดประสงค์ที่คล้ายกัน คือ เพื่อใช้ในการตรวจสอบและกรองข้อมูล แต่ก็มีความแตกต่างในรูปแบบการทำงานและการใช้งานดังนี้ :

การใช้งาน

  • RegExp ใน JavaScript ถูกใช้ในการกำหนดรูปแบบที่ต้องจับคู่กับ string methods เช่น test(), exec(), match(), replace()

  • Filter ใน PHP มีฟังก์ชันที่กำหนดรูปแบบสำเร็จรูปมาให้แล้ว เช่น FILTER_FLAG_STRIP_LOW, FILTER_FLAG_STRIP_HIGH

ประสิทธิภาพและความยืดหยุ่น

  • RegExp ใน JavaScript มีความยืดหยุ่นสูงมากในการกำหนดรูปแบบการจับคู่ข้อมูล สามารถสร้างกฎการจับคู่ได้หลากหลายและซับซ้อนได้ตามต้องการ

  • PHP ใช้งานง่าย มีฟังก์ชันพร้อมใช้งานสำหรับการกรองข้อมูล

เปรียบเทียบกับภาษา C

ใน C การกรองข้อมูลขั้นสูงจะต้องสร้างเองโดยใช้เงื่อนไข เนื่องจาก C เป็นไม่มีไลบรารีการตรวจสอบข้อมูลแบบฟิลเตอร์โดยตรงเหมือนใน PHP แต่สามารถเขียนโค้ดเพื่อทำการตรวจสอบหรือแปลงข้อมูลได้

เปรียบเทียบกับภาษา Python

Regular Expressions (RegExp) ใน Python โดยโมดูล re มีฟังก์ชันต่าง ๆ สำหรับการค้นหาและจัดการสตริงโดยใช้รูปแบบ (pattern) เช่น การตรวจสอบ การค้นหา การแทนที่

การใช้งาน

  • โมดูล re ใน Python ใช้สำหรับ Regular Expressions (RegExp) เพื่อค้นหา จับคู่ และจัดการกับสตริงในรูปแบบที่ซับซ้อน เช่น การค้นหาข้อความ การแทนที่ข้อความ การตรวจสอบโครงสร้างของข้อมูล การแบ่งสตริง และอื่น ๆ มีฟังก์ชันที่เกี่ยวข้องกับการตรวจสอบข้อมูลเชิงโครงสร้าง เช่น re.search(), re.match(), re.findall(), re.split() และ re.sub()

  • Filter ใน PHP ใช้สำหรับการ กรองข้อมูลและตรวจสอบข้อมูล (data validation and sanitization) ซึ่งส่วนใหญ่ใช้กับการกรองและตรวจสอบค่า เช่น ตัวเลข สตริง อีเมล URL มีฟังก์ชันที่เกี่ยวข้อง เช่น FILTER_VALIDATE_EMAIL และ FILTER_SANITIZE_STRING

Reference

Last updated