6. Hàm filter_var() trong bộ lọc PHP

Các hàm filter_var() giúp ta lọc cả validate và dữ liệu cần vệ sinh. Hàm này có chức năng lọc một biến duy nhất và với một bộ lọc định. Nó cần 2 phần dữ liệu:

  • Biến mà ta muốn kiểm tra
  • Loại type mà bạn sẽ sử dụng

7. Lọc một chuỗi trong PHP

Ta sẽ sử dụng hàm filter_var() để xóa tất cả các thẻ HTML khỏi một chuỗi

Ví dụ:

<?php
$str = "<h1Lập trình từ đầu!</h1>";
$newstr = filter_var($str, FILTER_SANITIZE_STRING);
echo $newstr;
?>

Sau khi làm sạch với bộ lọc với ID bộ lọc là FILTER_SANITIZE_STRING chúng ta có kết quả đầu ra như sau:

Lập trình từ đầu!

8. Xác thực một số nguyên trong PHP

Ví dụ sau sử dụng hàm filter_var() để kiểm tra xem biến $int có phải là số nguyên hay không. Nếu $int là một số nguyên, đầu ra của đoạn mã dưới đây sẽ là: “Số nguyên hợp lệ”. Nếu $int không phải là số nguyên, kết quả sẽ là: “Số nguyên không hợp lệ”

Ví dụ:

<?php
$int = 100;
if (!filter_var($int, FILTER_VALIDATE_INT) === false) {
  echo("Số nguyên hợp lệ");
} else {
  echo("Số nguyên không hợp lệ");
}
?>

Trong ví dụ trên, nếu biến $int gán giá trị 0, đoạn mã sẽ hiển thị thông báo “… không là số nguyên”. Để khắc phục sự cố này, bạn cần kiểm tra rõ ràng giá trị 0, như sau:

<?php
  // Cho một giá trị số
  $int = 0;
  // Xác thực xem giá trị có phải số nguyên
  if(filter_var($int, FILTER_VALIDATE_INT) === 0 || filter_var($int, 
  FILTER_VALIDATE_INT)){
      echo "<b>$int</b> là số nguyên";
  } else{
      echo "<b>$int</b> không là số nguyên";
  }
?>

9. Xác thực địa chỉ IP trong PHP

Ví dụ sau sẽ xác thực xem giá trị có phải là địa chỉ IP hợp lệ hay không:

<?php
  // Cho một địa chỉ IP
  $ip = "172.16.254.1";
  // Xác thực địa chỉ IP
  if(filter_var($ip, FILTER_VALIDATE_IP)){
      echo "<b>$ip</b> là địa chỉ IP hợp lệ";
  } else {
      echo "<b>$ip</b> không là địa chỉ IP hợp lệ";
  }
?>

Bạn có thể tiếp tục áp dụng xác thực cho các địa chỉ IP IPV4 hoặc IPV6 bằng cách sử dụng các bộ lọc FILTER_FLAG_IPV4 hoặc FILTER_FLAG_IPV6 tương ứng. Dưới đây là một ví dụ:

<?php
  // Cho một địa chỉ IP
  $ip = "172.16.254.1";
 
  // Xác thực địa chỉ IP
  if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)){
      echo "<b>$ip</b> là địa chỉ IPV6 hợp lệ";
  } else {
      echo "The <b>$ip</b> không là địa chỉ IPV6 hợp lệ";
  }
?>

10. Lọc và xác thực địa chỉ Email trong PHP

Ví dụ sau sử dụng hàm filter_var() để xóa tất cả các ký tự không hợp lệ khỏi biến $email, sau đó kiểm tra xem đó có phải là địa chỉ email hợp lệ hay không:

<?php
$email = "Lttd@gmail.com";
// Xóa tất cả các ký tự không hợp lệ khỏi email
$email = filter_var($email, FILTER_SANITIZE_EMAIL);
// Xác thực email
if (!filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
  echo("$email là một địa chỉ email hợp lệ");
} else {
  echo("$email là một địa chỉ email không hợp lệ");
}
?>

11. Lọc và xác thực một URL trong PHP

Ví dụ sau đây sẽ cho bạn thấy cách làm sạch và xác thực một url thông qua bộ lọc Filter của PHP:

<?php
  // Cho một URL
  $url = "https:://laptrinhtudau.com/";
 // Xóa ký tự không hợp lệ khỏi URL
  $urls = filter_var($url, FILTER_SANITIZE_URL);
  // Xác thực URL
  if(filter_var($urls, FILTER_VALIDATE_URL)){
      echo "<b>$urls</b> là URL hợp lệ";
  } else{
      echo "<b>$urls</b> không là URL hợp lệ";
  }
?>

Bạn cũng có thể kiểm tra xem URL có chứa chuỗi truy vấn hay không bằng cách sử dụng FILTER_FLAG_QUERY_REQUIRED, như trong ví dụ sau:

<?php
  // Cho một URL
  $url = "http://www.example.com?topic=filters";
  // Xác thực URL có chứa chuỗi truy vấn hay không
  if(filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_QUERY_REQUIRED)) 
  {
      echo "<b>$url</b> chứa chuỗi truy vấn";
  } else{
      echo "<b>$url</b> không chứa chuỗi truy vấn";
  }
?>

12. Xác thực một số nguyên trong phạm vi trong PHP

Ví dụ sau sẽ xác thực giá trị được cung cấp có phải là số nguyên hay không, cũng như liệu nó có nằm trong phạm vi từ 0 đến 100 hay không:

<?php
  // Cho một số nguyên
  $int = 75; 
  // Xác thực giá trị trong khoảng từ 0 - 100
  if(filter_var($int, FILTER_VALIDATE_INT, array("options" => 
  array("min_range" => 0,"max_range" => 100)))){
      echo "<b>$int</b> là số nguyên nằm trong khoảng 0 - 100";
  } else{
      echo "<b>$int</b> không là số nguyên nằm trong khoảng 0- 100";
  }

13. Xác thực địa chỉ IPv6 với PHP

Ví dụ sau sẽ kiểm tra xem biến $ip có phải là địa chỉ Ipv6 hợp lệ không:

<?php
    $ip = "2001:0db8:85a3:08d3:1319:8a2e:0370:7334";
    if (!filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6) === false) {
        echo("$ip là một địa chỉ IPv6 hợp lệ ");
    } else {
        echo("$ip là một địa chỉ IPv6 không hợp lệ ");
    }
?>

Kết quả là:

2001:0db8:85a3:08d3:1319:8a2e:0370:7334 là một địa chỉ IPv6 hợp lệ

14. Xác thực URL phải chứa QueryString

QueryString có nghĩa là một chuỗi truy vấn. Ta sẽ xác thực xem biến $url có phải là URL có chuỗi truy vấn không.

Ví dụ:

<?php
    $url = "https://tech.comdy.vn?page=2";
    if (!filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_QUERY_REQUIRED) === false) {
        echo("$url là một URL hợp lệ với một chuỗi truy vấn ");
    } else {
        echo("$url không phải là một URL hợp lệ với một chuỗi truy vấn ");
    }
?>