PHP preg_match(): Biểu thức chính quy (Regex)
⚡ Tóm tắt thông minh
Biểu thức chính quy trong PHP là công cụ khớp mẫu giúp xác thực, tách và thay thế văn bản trong một biểu thức duy nhất. Hướng dẫn này sẽ trình bày các hàm cốt lõi preg_match, preg_split và preg_replace, giải thích các ký tự đặc biệt phổ biến và xây dựng từng bước một mẫu xác thực email hoạt động.

Biểu thức chính quy trong PHP là gì?
Biểu thức chính quy PHPBiểu thức chính quy (regex) là một công cụ mạnh mẽ để khớp mẫu, có thể được thực hiện chỉ bằng một biểu thức duy nhất. Biểu thức chính quy sử dụng các ký tự đặc biệt như +, -, và ^ để tạo ra các biểu thức phức tạp. Chúng có thể giúp bạn hoàn thành các tác vụ như xác thực địa chỉ email, địa chỉ IP, và nhiều hơn nữa.
Tại sao sử dụng biểu thức chính quy
- Biểu thức chính quy trong PHP giúp đơn giản hóa việc xác định các mẫu trong dữ liệu chuỗi bằng cách gọi một hàm duy nhất. Điều này giúp tiết kiệm thời gian lập trình.
- Khi xác thực dữ liệu người dùng nhập vào, chẳng hạn như địa chỉ email, tên miền, số điện thoại và địa chỉ IP.
- Làm nổi bật từ khóa trong kết quả tìm kiếm
- Khi tạo mẫu HTML tùy chỉnh. Regex trong PHP có thể được sử dụng để xác định các thẻ mẫu và thay thế chúng bằng dữ liệu thực tế.
Các hàm biểu thức chính quy tích hợp trong PHP
PHP có các hàm tích hợp cho phép chúng ta làm việc với biểu thức chính quy, và chúng ta sẽ tìm hiểu điều đó trong hướng dẫn này. Hãy cùng xem xét các hàm biểu thức chính quy thường được sử dụng trong PHP.
- Hàm `preg_match()` trong PHP được sử dụng để thực hiện so khớp mẫu trên một chuỗi. Nó trả về `true` nếu tìm thấy kết quả khớp và `false` nếu không tìm thấy kết quả khớp.
- Hàm `preg_split()` trong PHP được sử dụng để tìm kiếm mẫu trong một chuỗi và sau đó tách kết quả thành một mảng số.
- preg_replace() trong PHP – hàm này được sử dụng để thực hiện khớp mẫu trên một chuỗi và sau đó thay thế khớp bằng văn bản đã chỉ định.
Dưới đây là cú pháp cho một hàm biểu thức chính quy như preg_match(), preg_split() hoặc preg_replace().
<?php
function_name('/pattern/',subject);
?>
ĐÂY,
- “function_name(…)” có thể là preg_match(), preg_split() hoặc preg_replace().
- Dấu gạch chéo “/…/” biểu thị sự bắt đầu và kết thúc của biểu thức chính quy.
- “'/pattern/'” là mẫu mà chúng ta cần khớp.
- “chủ đề” là chuỗi văn bản được so khớp với
Bây giờ chúng ta hãy xem xét các ví dụ thực tế minh họa cách sử dụng các hàm regex PHP nêu trên.
Preg_match() trong PHP
Ví dụ đầu tiên sử dụng hàm preg_match() để thực hiện so khớp mẫu đơn giản cho từ "guru" trong một chuỗi đã cho. URL.
Đoạn mã dưới đây thể hiện cách triển khai hàm preg_match() cho ví dụ trên.
<?php $my_url = "www.guru99.com"; if (preg_match("/guru/", $my_url)) { echo "the url $my_url contains guru"; } else { echo "the url $my_url does not contain guru"; } ?>
Duyệt đến URL http://localhost/phptuts/preg_match_simple.php
Chúng ta hãy cùng xem xét phần mã chịu trách nhiệm cho kết quả đầu ra của chúng ta. preg_match('/guru/', $my_url). ĐÂY,
- “preg_match(…)” là hàm biểu thức chính quy PHP
- “'/guru/'” là mẫu biểu thức chính quy cần khớp
- “$my_url” là biến chứa văn bản được so khớp.
PHP Preg_split()
Bây giờ chúng ta hãy xem một ví dụ khác sử dụng hàm preg_split().
Chúng ta sẽ lấy một cụm từ chuỗi và chia nó thành một mảng; mẫu cần khớp là một khoảng trắng.
Chuỗi văn bản được sử dụng trong ví dụ này là “I Love Regular Expressions”.
Đoạn mã dưới đây minh họa việc thực hiện ví dụ trên.
<?php $my_text = "I Love Regular Expressions"; $my_array = preg_split("/ /", $my_text); print_r($my_array ); ?>
Duyệt đến URL http://localhost/phptuts/preg_split.php
PHP Preg_replace()
Bây giờ chúng ta hãy xem xét hàm preg_replace(). Hàm PHP thực hiện khớp mẫu và sau đó thay thế mẫu đó bằng một mẫu khác.
Đoạn mã dưới đây tìm kiếm từ guru trong một chuỗi.
Nó thay thế từ "guru" bằng từ "guru" được bao quanh bởi mã CSS làm nổi bật màu nền.
<?php $text = "We at Guru99 strive to make quality education affordable to the masses. Guru99.com"; $text = preg_replace("/Guru/", '<span style="background:yellow">Guru</span>', $text); echo $text; ?>
Giả sử bạn đã lưu tệp preg_replace.php, hãy truy cập vào đường dẫn sau: URL http://localhost/phptuts/preg_replace.php
Siêu ký tự biểu thức chính quy
Các ví dụ trên đã sử dụng các mẫu rất cơ bản. Các ký tự đặc biệt cho phép chúng ta thực hiện các phép so khớp mẫu phức tạp hơn, chẳng hạn như kiểm tra tính hợp lệ của địa chỉ email. Bây giờ chúng ta hãy xem xét các ký tự đặc biệt thường được sử dụng.
| siêu ký tự | Mô tả Chi tiết | Ví dụ |
|---|---|---|
| . | Khớp với bất kỳ ký tự đơn nào ngoại trừ một dòng mới | /./ khớp với bất cứ thứ gì có một ký tự |
| ^ | Khớp với phần đầu của chuỗi hoặc loại trừ các ký tự. | /^PH/ khớp với bất kỳ chuỗi nào bắt đầu bằng PH |
| $ | Khớp với một mẫu ở cuối chuỗi | /com$/ khớp với guru99.com, yahoo.com, v.v. |
| * | Khớp với không hoặc nhiều hơn các ký tự đứng trước | /com*/ khớp với máy tính, giao tiếp, v.v. |
| + | Yêu cầu ký tự (hoặc các ký tự) đứng trước phải xuất hiện ít nhất một lần. | /yah+oo/ khớp với yahoo |
| \ | Được dùng để thoát khỏi các ký tự siêu hình. | /yahoo+\.com/ coi dấu chấm là giá trị bằng chữ |
| [...] | Lớp nhân vật | /[abc]/ khớp với a, b hoặc c |
| AZ | Khớp với chữ cái viết thường | /az/ phù hợp với mát mẻ, vui vẻ, v.v. |
| AZ | Khớp với chữ in hoa | /AZ/ khớp với CÁI GÌ, THẾ NÀO, TẠI SAO, v.v. |
| 0-9 | Khớp với bất kỳ số nào từ 0 đến 9 | /0-4/ khớp 0,1,2,3,4 |
Danh sách trên chỉ cung cấp các siêu ký tự được sử dụng phổ biến nhất trong biểu thức chính quy.
Bây giờ chúng ta hãy xem xét một ví dụ khá phức tạp kiểm tra tính hợp lệ của một địa chỉ email.
<?php $my_email = "name@company.com"; if (preg_match("/^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$/", $my_email)) { echo "$my_email is a valid email address"; } else { echo "$my_email is NOT a valid email address"; } ?>
Giải thích mô hình xác thực email
ĐÂY,
- “/…/” bắt đầu và kết thúc biểu thức chính quy
- “^[a-zA-Z0-9._-]” khớp với bất kỳ chữ cái viết thường hoặc viết hoa, số từ 0 đến 9, và dấu chấm, dấu gạch dưới hoặc dấu gạch ngang nào.
- “+@[a-zA-Z0-9-]” khớp với ký hiệu @ theo sau là các chữ cái viết thường hoặc viết hoa, các số từ 0 đến 9 hoặc dấu gạch ngang.
- “+\.[a-zA-Z.]{2,5}$/” sử dụng dấu gạch chéo ngược để thoát khỏi dấu chấm, sau đó khớp với bất kỳ chữ cái viết thường hoặc viết hoa nào có độ dài ký tự từ 2 đến 5 ở cuối chuỗi.
Duyệt đến URL http://localhost/phptuts/preg_match.php
Như bạn có thể thấy từ phần phân tích ở trên, các ký tự đặc biệt rất mạnh mẽ khi nói đến việc khớp các mẫu.




