1. Regular Expression là gì?

Regular Expression (biểu thức chính quy) là một chuỗi các ký tự đặc biệt được sử dụng để xác định một mẫu (pattern) trong văn bản. Nó thường được dùng để kiểm tra, tìm kiếm, thay thế hoặc xử lý chuỗi.

Trong PHP, Regular Expression thường được sử dụng để kiểm tra định dạng email, số điện thoại, hoặc xử lý các trường hợp chuỗi phức tạp. PHP hỗ trợ hai loại biểu thức chính quy:

  • POSIX: Sử dụng các hàm như ereg(), nhưng đã bị loại bỏ từ PHP 5.3.
  • PCRE (Perl-Compatible Regular Expressions): Được sử dụng với các hàm preg_*, đây là loại biểu thức được khuyến nghị sử dụng.

2. Cú pháp Regular Expression cơ bản

Regular Expression có nhiều ký tự và quy tắc đặc biệt để định nghĩa mẫu, dưới đây là các ký tự thông dụng:

2.1 Ký tự đặc biệt

  • .: Đại diện cho bất kỳ ký tự nào.
  • ^: Bắt đầu của chuỗi.
  • $: Kết thúc của chuỗi.
  • *: Lặp lại 0 hoặc nhiều lần ký tự trước.
  • +: Lặp lại 1 hoặc nhiều lần ký tự trước.
  • ?: 0 hoặc 1 lần lặp lại ký tự trước.
  • []: Bộ ký tự, ví dụ [abc] sẽ khớp với a, b, hoặc c.
  • |: Toán tử OR, ví dụ a|b sẽ khớp với a hoặc b.
  • (): Nhóm các mẫu lại với nhau.
  • {n}: Lặp lại chính xác n lần.
  • {n,}: Lặp lại ít nhất n lần.
  • {n,m}: Lặp lại từ n đến m lần.

2.2 Các ký tự đặc biệt khác

  • d: Đại diện cho bất kỳ chữ số nào (tương đương [0-9]).
  • D: Bất kỳ ký tự nào không phải là chữ số.
  • w: Bất kỳ ký tự chữ cái hoặc số, hoặc dấu gạch dưới (tương đương [A-Za-z0-9_]).
  • W: Bất kỳ ký tự nào không phải là chữ cái, số, hoặc dấu gạch dưới.
  • s: Khoảng trắng (space, tab, newline, etc.).
  • S: Bất kỳ ký tự nào không phải là khoảng trắng.

3. Các hàm Regular Expression trong PHP

3.1 preg_match()

Hàm preg_match() được dùng để kiểm tra xem một chuỗi có khớp với mẫu biểu thức chính quy hay không.

Cú pháp:

preg_match_all()

Kết quả:

preg_replace()

Kết quả:

preg_split()

Kết quả:

$pattern = "/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,}$/";

4.3 Thay thế tất cả khoảng trắng bằng dấu gạch ngang

$string = "The quick brown fox";
$pattern = "/s+/";
$replacement = "-";
echo preg_replace($pattern, $replacement, $string);

Kết quả:

The-quick-brown-fox

4.4 Kiểm tra chuỗi có chứa số

$string = "Tôi có 10 quyển sách";
$pattern = "/d+/";
if (preg_match($pattern, $string)) {
    echo "Chuỗi chứa số";
} else {
    echo "Chuỗi không chứa số";
}

5. Kết luận

Regular Expression trong PHP là một công cụ cực kỳ mạnh mẽ giúp xử lý chuỗi một cách linh hoạt và hiệu quả. Với sự hiểu biết về các cú pháp và hàm cơ bản, bạn có thể áp dụng Regular Expression để kiểm tra dữ liệu đầu vào, xử lý chuỗi, và thực hiện nhiều thao tác phức tạp hơn trong ứng dụng của mình.

Hy vọng qua bài viết này, bạn đã nắm được các kiến thức từ cơ bản đến nâng cao về Regular Expression trong PHP.