Hàm Filters trong PHP là gì?

10/May/2021 Lượt xem: 83

Filter là hàm lọc các loại dữ liệu đầu vào và loại bỏ đi các kiểu dữ liệu không mong muốn. Ví dụ như bạn muốn lọc chuỗi người dùng nhập vào một bài viết article, xóa tất cả các url có trong đó. Nhiều url ra trang web khác có thể làm ảnh hưởng đến kết quả SEO của bạn.

Filter Name Filter ID
int 257
boolean 258
float 259
validate_regexp 272
validate_domain 277
validate_url 273
validate_email 274
validate_ip 275
validate_mac 276
string 513
stripped 513
encoded 514
special_chars 515
full_special_chars 522
unsafe_raw 516
email 517
url 518
number_int 519
number_float 520
magic_quotes 521
callback 1024

Validating data = Xác định xem dữ liệu có ở dạng thích hợp hay không.

Sanitizing data = Xóa bất kỳ ký tự bất hợp pháp nào khỏi dữ liệu.

Các loại dữ liệu cần lọc phổ biến:

- Url ảnh hưởng đến SEO

- Bạn có thể lọc các ký tự đặc biệt

- Có thể lọc các số ra khỏi chuỗi đầu vào

- Có thể lọc hết tất cả các thẻ html chỉ để lại text.

- Loại bỏ các domain ra khỏi chuỗi đầu vào

Nói chung tùy mục đích trong từng trường hợp mà cần loại bỏ đi các dạng dữ liệu. Một vài dữ liệu có thể làm hỏng database do ảnh hưởng đến câu truy vấn SQL. 

Khi một người dùng nhập dữ liệu vào website bạn. Bạn nên có cơ chế kiểm tra để tránh các rắc rối không đáng có. 

Tham khảo đoạn code sau:

<!DOCTYPE html>
<html>
<head>
<style>
table, th, td {
  border: 1px solid black;
  border-collapse: collapse;
}
th, td {
  padding: 5px;
}
</style>
</head>
<body>

<table>
  <tr>
    <td>Filter Name</td>
    <td>Filter ID</td>
  </tr>
  <?php
  foreach (filter_list() as $id =>$filter) {
    echo '<tr><td>' . $filter . '</td><td>' . filter_id($filter) . '</td></tr>';
  }
  ?>
</table>

</body>
</html>

Bạn có thể xem kết quả ở đây

Hàm filter_var () để lọc html trong chuỗi đầu vào:

<?php
$str = "<h1>Hello World!</h1>";
$newstr = filter_var($str, FILTER_SANITIZE_STRING);
echo $newstr;
?>

Hàm filter_var () để kiểm tra chuỗi đầu vào có phải kiểu số int hay không?

<?php
$int = 100;

if (!filter_var($int, FILTER_VALIDATE_INT) === false) {
  echo("true");
} else {
  echo("false");
}
?>

 

Kiểm tra chuỗi đầu vào xem có trùng với số 0 hay là không?

<?php
$int = 0;

if (filter_var($int, FILTER_VALIDATE_INT) === 0 || !filter_var($int, FILTER_VALIDATE_INT) === false) {
  echo("true");
} else {
  echo("false");
}
?>

 

Kiểm tra chuỗi đầu vào có phải địa chỉ IP hay không?

$ip = "127.0.0.1";

if (!filter_var($ip, FILTER_VALIDATE_IP) === false) {
  echo("$ip true");
} else {
  echo("$ip false");
}
?>