Hàm filter_var() trong PHP
Trần Thị Vân
- 1197
- 06/08/2025
Chức năng của Hàm filter_var() trong PHP
Hàm filter_var() trong PHP dùng để kiểm tra các chuỗi truyền vào như: email, số int, url,... hoặc làm sạch chuỗi string.
Cú pháp của Hàm filter_var() trong PHP
$kết_quả = filter_var($biến_chứa_giá_trị_cần_kiểm_tra, trường_hợp);
$biến_chứa_giá_trị_cần_kiểm_tra: Biến chứa giá trị cần kiểm tra.
trường_hợp: Trường hợp kiểm tra, Ví dụ: FILTER_VALIDATE_EMAIL (Kiểm tra có phải là email hợp lệ), FILTER_VALIDATE_URL (Kiểm tra có phải là URL hợp lệ), FILTER_VALIDATE_INT (Làm sạch thành số nguyên và kiểm tra có phải là số nguyên hợp lệ), FILTER_SANITIZE_STRING (Làm sạch chuỗi),.....
$kết_quả: Kết quả trả về là true hoặc false, có thể là 1 chuỗi,...
Code Hàm filter_var() trong PHP
<?php
$email = "tanlucit09@gmail.com";
// Kiểm tra email đúng chưa
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo $email." là một địa chỉ email hợp lệ.<br>";
} else {
echo $email." không phải là một địa chỉ email hợp lệ.<br>";
}
// Kết quả: tanlucit09@gmail.com là một địa chỉ email hợp lệ.
$url ="https://webmoi.vn/";
// Kiểm tra url đúng chưa
if (filter_var($url, FILTER_VALIDATE_URL)) {
echo $url." là một địa chỉ url hợp lệ.<br>";
} else {
echo $url." không phải là một địa chỉ url hợp lệ.<br>";
}
// Kết quả: https://webmoi.vn/ là một địa chỉ url hợp lệ.
$int = "90";
// Xác thực và làm sạch số nguyên
if (filter_var($int, FILTER_VALIDATE_INT, array("options" => array("min_range"=>1, "max_range"=>100)))) {
echo $int." là một số nguyên hợp lệ trong khoảng từ 1 đến 100.<br>";
} else {
echo $int." không phải là một số nguyên hợp lệ trong khoảng từ 1 đến 100.<br>";
}
// Kết quả: 90 là một số nguyên hợp lệ trong khoảng từ 1 đến 100.
$string = "<script>alert('hello')</script>";
// Làm sạch chuỗi
$sanitized_string = filter_var($string, FILTER_SANITIZE_STRING);
echo "Chuỗi sau khi làm sạch: " . $sanitized_string . "<br>";
// Kết quả: Chuỗi sau khi làm sạch: alert('hello')
?>
Kết quả:
tanlucit09@gmail.com là một địa chỉ email hợp lệ.
https://webmoi.vn/ là một địa chỉ url hợp lệ.
90 là một số nguyên hợp lệ trong khoảng từ 1 đến 100.
Chuỗi sau khi làm sạch: alert('hello')
Những trường hợp nên dùng filter_var() trong PHP
filter_var() phù hợp khi cần kiểm tra hoặc làm sạch một giá trị trước khi đưa vào bước xử lý tiếp theo. Hàm đặc biệt hữu ích với dữ liệu nhận từ biểu mẫu, URL, tham số truy vấn hoặc các nguồn đầu vào mà lập trình viên không nên mặc định là hợp lệ.
Kiểm tra dữ liệu người dùng nhập vào
Dữ liệu từ người dùng có thể chứa sai định dạng, ký tự ngoài dự kiến hoặc giá trị không phù hợp với yêu cầu của ứng dụng. Sử dụng filter_var() giúp kiểm tra dữ liệu ngay từ bước đầu, chẳng hạn xác nhận một địa chỉ email có đúng định dạng hoặc một giá trị có phải là số nguyên hay không.
Ví dụ, kiểm tra số nguyên từ dữ liệu biểu mẫu:
<?php
$age = "25";
if (filter_var($age, FILTER_VALIDATE_INT) !== false) {
echo "Dữ liệu hợp lệ";
} else {
echo "Dữ liệu không hợp lệ";
}
?>
Cách làm này giúp hạn chế việc xử lý dữ liệu sai kiểu ở những bước phía sau. Tuy nhiên, kết quả hợp lệ về mặt định dạng không đồng nghĩa giá trị đó luôn phù hợp với nghiệp vụ. Nếu ứng dụng yêu cầu độ tuổi từ 18 đến 100, vẫn cần kiểm tra thêm giới hạn sau khi xác thực kiểu dữ liệu.
Xác thực email, URL và số bằng filter_var()
Một ưu điểm đáng chú ý của filter_var() là có sẵn nhiều bộ lọc phục vụ các dạng dữ liệu phổ biến. Có thể dùng FILTER_VALIDATE_EMAIL để kiểm tra email, FILTER_VALIDATE_URL để xác thực URL hoặc FILTER_VALIDATE_INT để kiểm tra số nguyên.
Ví dụ kiểm tra đồng thời email và URL:
<?php
$email = "user@example.com";
$url = "https://example.com";
$emailValid = filter_var($email, FILTER_VALIDATE_EMAIL);
$urlValid = filter_var($url, FILTER_VALIDATE_URL);
if ($emailValid !== false) {
echo "Email hợp lệ";
}
if ($urlValid !== false) {
echo "URL hợp lệ";
}
?>
Khi xác thực, nên kiểm tra kết quả bằng phép so sánh nghiêm ngặt với false. Điều này giúp tránh nhầm lẫn trong những trường hợp giá trị trả về có thể được PHP đánh giá là sai trong điều kiện thông thường.
Phân biệt xác thực và làm sạch dữ liệu
Xác thực nhằm trả lời câu hỏi dữ liệu có đáp ứng một định dạng hoặc điều kiện nhất định hay không. Trong khi đó, làm sạch tập trung vào việc loại bỏ hoặc thay đổi những phần dữ liệu không mong muốn.
Hai mục đích này không nên được xem là giống nhau. Một giá trị sau khi được làm sạch chưa chắc đã là dữ liệu hợp lệ theo yêu cầu của ứng dụng. Vì vậy, với dữ liệu quan trọng, nên xác định rõ mục tiêu trước khi chọn filter.
Ví dụ, khi nhận email từ biểu mẫu, ứng dụng có thể cần xác thực định dạng thay vì cố gắng biến một chuỗi không hợp lệ thành email hợp lệ. Việc chọn đúng loại filter sẽ giúp quá trình xử lý dữ liệu rõ ràng và dễ kiểm soát hơn.
Lời kết
Cảm ơn các bạn đã tham khảo bài viết Hàm filter_var() trong PHP.
- 0 Bình luận
Email, Điện thoại của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *