[PHP căn bản] Bài 12 – Biểu thức chính quy(Regular Expression) cơ bản trong PHP

Biểu thức chính quy(Regular Expression) là một chuỗi miêu tả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định(theo wikipedia).

PHP cũng hỗ trợ một hàm để thực hiện biểu thức, đó là preg_match().
Trong bài này tôi chưa đi sâu vào tìm hiểu về regular expression mà chỉ dừng lại ở mức độ giới thiệu qua cho mọi người để các bạn có thể hình dung phần nào về nó.

Các ký tự đặc biệt trong Regular Expression

- Regular Expression chia ra làm 2 loại ký tự:
+ Ký tự thường bao gồm các ký tự trong bảng chữ cái: a,b,c,d,.. và các chuỗi thông thường được ghép từ các ký tự đó.
+ Ký tự đặc biệt: Đơn giản là chúng ta không chỉ muốn tìm kiếm các chuỗi ký tự thông thường, vì thế chúng ta cần phải sử dụng một số ký tự đặc biệt. Các bạn có thể tham khảo tại
http://www.regular-expressions.info/characters.html
Dưới đây là một số ký tự đặc biệt mà chúng ta sẽ sử dụng trong ví dụ sắp tới:
^ : Trả về chuỗi kết quả phù hợp với vị trí đầu của chuỗi gốc.
$ : Trả về chuỗi kết quả phù hợp với vị trí cuối của chuỗi gốc.
: Ký tự Escape.
+ : Lặp lại 1 hay nhiều lần.

Ví dụ

- Bây giờ chúng ta sẽ kiểm tra xem địa chỉ email vietobject@gmail.com có hợp lệ hay không bằng cách sử dụng regular expression và hàm preg_match() trong PHP.
B1: Tạo file bai12.php trong D:\wamp\www\. Nhập đoạn code sau:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<html>
<head>
<title>Bài 12 - Regular Expression</title>
</head>
 
<body>
<?php
    //chuỗi gốc dùng để so sánh, ở đây là một địa chỉ e-mail
    $email "vietobject@gmail.com";
     
    //mẫu biểu thức, lưu ý mẫu biểu thức phải nằm trong dấu "" và nằm trong cặp dấu /../
    $pattern "/^[a-zA-Z0-9]+@[a-zA-Z0-9]+\.[a-zA-Z]+$/";
     
    //nếu chuỗi so sánh hợp lệ, hàm preg_match() trả về 1, ngược lại trả về 0
    echo preg_match($pattern,$email);
?>
</body>
</html>
- Giải thích:
^[a-zA-Z0-9]+ : phù hợp với tất cả các ký tự từ a đến z(viết thường), A đến Z(viết hoa) và các số từ 1 đến 9 ở đầu chuỗi(dấu “^” đứng trước ám chỉ so sánh ở đầu chuỗi). Dấu “+” là chỉ các ký tự này có thể lặp đi lặp lại nhiều lần, nếu thiếu dấu này, kết quả sẽ chỉ dừng lại ở việc so sánh với ký tự “v” trong chuỗi “vietobject@gmail.com” thay vì chuỗi chúng ta muốn so sánh là “vietobject”.
@ : là dấu “@” trong chuỗi “vietobject@gmail.com”.
[a-zA-Z0-9]+ : tương tự như so sánh ở chuỗi đầu, nhưng chuỗi chúng ta muốn so sánh ở đây là “gmail” trong chuỗi “vietobject@gmail.com”.
. : là dấu “.” trong chuỗi “vietobject@gmail.com”. Lý do chúng ta cần dùng thêm dấu “\” đứng trước là bởi chúng ta muốn PHP hiểu rằng đây là một ký tự dấu chấm thông thường chứ không phải là một dấu chấm đặc biệt (như dấu chấm chúng ta dùng để nối chuỗi chẳng hạn). Nôm na, chúng ta muốn escape dấu chấm này khỏi chức năng đặc biệt của nó.
[a-zA-Z]+$ : phù hợp với tất cả ký tự trong cuối chuỗi (dấu “$” đứng cuối ám chỉ so sánh ở cuối chuỗi). Ở đây là chuỗi “com” trong chuỗi “vietobject@gmail.com”.
B2: Vào trình duyệt, nhập đường dẫn http://localhost/bai12.php
140