Hướng dẫn dùng net regex trong PHP

Danh sách các bài viết trong chuyên mục Regular Expression PHP, đây là những bài viết mới nhất được cập nhật trong mục Regular Expression PHP.

Trước đây việc xử lý chuỗi trong PHP rất là khó khăn bởi nó cung cấp quá ít hàm xử lý chuỗi, hoặc nếu có thì các hàm đó lại không có một chuẩn chung để kiểm tra định dạng của chuỗi. Nhưng từ ngày Regular Expression ra đời thì vấn đề này đã được giải quyết. 

Regular Expression là một chương trình mẫu (biểu thức chính quy) dùng để so khớp với dữ liệu. Ngoài cách ghi này ra thì người ta cò ghi tắt là ReExp, vì vậy kể từ bây giờ nếu mình có ghi RegExp thì ban phải hiểu đó là Regular Expression nhé.

Hiện trong PHP có một số hàm dùng để xử lý RegExp như preg_match, preg_match_all, ... Công dụng nhiều nhất của Regular Expression PHP đó là dùng để tách chuỗi khi lấy nội dung từ website khác, hoặc nó dùng để kiểm tra định dạng dữ liệu truyền vào có hợp lệ hay không. Đây là hai vấn đề thường gặp khi bạn làm website, vì vậy bạn không nên bỏ qua series học RegExp​ này bởi vì series này mình viết khá đầy đủ và dư cho bạn sử dụng khi xây dựng dự án. Tuy nhiên nếu bạn chỉ muốn sử dụng đơn giản thì có thể đọc vài bài đầu về các cú pháp đơn giản của Regex và các hàm xử lý Regular Expression trong PHP là được.

Regular Expression được tích hợp vào hầu hết các ngôn ngữ lập trình hiện nay, mỗi ngôn ngữ sẽ có những hàm xử lý khác nhau nhưng về chuẩn biểu thức chính quy thì thì giống nhau, vì vậy nếu bạn đã từng sử dụng biểu thức Regex ở ngôn ngữ khác thì khi qua PHP sẽ không gây khó khăn cho bạn.

Còn chờ gì nữa mà at không bắt đầu học ngay nhỉ? Nhớ share cho bạn bè cùng học chung nhé.

+REGULAR EXPRESSION PHP
1 Regular Expression là gì?
2 Các quy tắc Regular Expression căn bản
3 Các quy tắc Regular Expression căn bản (tiếp theo)
4 Giới thiệu website kiểm tra Regular Expression
5 Hàm preg_match trong php
6 Hàm preg_replace trong php
7 Hàm preg_match_all trong php
8 None Capturing Group trong Regular Expression
9 Negative Và Positive Lookbehind trong Regular Expression
10 Negative Và Positive Lookahead trong Regular Expression
11 Học Regular Expression qua ví dụ - Bài tập căn bản

Chúng ta đã tìm hiểu cú pháp cơ bản của RegEx trong bài viết này, hôm nay tôi và các bạn sẽ tìm hiểu việc áp dụng nó trong PHP.

Tài liệu tham khảo dễ hiểu là W3School và các tài liệu khác tôi tìm thấy trên mạng.

Trong phần đầu W3School định nghĩa Regular Expression (biểu thức chính quy) như thế này:

Regex là một chuỗi các ký tự tạo thành mẫu tìm kiếm. Khi bạn tìm kiếm dữ liệu trong một văn bản (text), bạn có thể sử dụng mẫu tìm kiếm để mô tả bạn muốn tìm kiếm điều gì.

Regex có thể là một ký tự hoặc một mẫu phức tạp hơn.

Regex có thể được dùng để thực hiện tất cả các kiểu tìm kiếm văn bản và thay thế văn bản.


  • #1. Cú pháp
  • #2. Các hàm Regular Expression
  • #3. Cách sử dụng preg_match()
  • #4. Cách sử dụng preg_replace()
  • #5. Cách sử dụng preg_match_all()
  • #6. Các tùy chọn điều chỉnh trong Regex

#1. Cú pháp

Trong PHP thì Regex là một chuỗi được tạo thành từ dấu phân cách, mẫu tìm kiếm và các tùy chọn khác. Ví dụ:

$exp = "/regex/i"

Trong ví dụ trên, / là dấu phân cách, regex là mẫu tìm kiếm, và i là tùy chọn dùng để tìm kiếm không phân biệt chữ HOA chữ thường (case-insensitive).

Dấu phân cách có thể là bất kỳ ký tự nào, nhưng không được phép là chữ cái (a, b, c,…, x, y, z), số (0, 1, 2 ,…9), dấu gạch ngược (\) hoặc khoảng trắng. Dấu phân cách phổ biến nhất là dấu gạch xuôi (/), tuy nhiên nếu mẫu tìm kiếm của bạn bao gồm dấu gạch xuôi thì sẽ tiện lợi hơn nếu bạn chọn dấu phân cách khác, chẳng hạn như # hoặc ~.


#2. Các hàm Regular Expression

PHP cung cấp đa dạng các hàm cho phép bạn sử dụng biểu thức chính quy, trong đó các hàm preg_match(), preg_match_all()preg_repalace() là một trong các hàm được sử dụng nhiều nhất.

Hàm Mô tả
preg_match() Trả về kết quả 1 nếu mẫu được tìm thấy trong chuỗi, trả về kết quả 0 nếu không tìm thấy
preg_match_all() Trả về số lần mẫu tìm kiếm được tìm thấy trong chuỗi, nếu không tìm thấy, kết quả cũng là 0
preg_replace() Trả về chuỗi mới khi mẫu khớp với chuỗi mà bạn muốn thay thế

#3. Cách sử dụng preg_match()

Hàm preg_match() sẽ nói cho bạn biết liệu rằng mẫu có nằm trong chuỗi hay không.

Ví dụ sử dụng regex để tìm kiếm mẫu “nguyễn” không phân biệt hoa thường trong chuỗi:

$str = "Nguyễn Đức Anh";
$pattern = "/nguyễn/i";
echo preg_match($pattern, $str); // Kết quả là 1

#4. Cách sử dụng preg_replace()

Hàm preg_replace sẽ giúp bạn thay thế tất cả mẫu bằng một chuỗi khác mà bạn muốn.

Ví dụ tôi muốn thay thế từ sai chính tả nguyeen thành nguyễn:

$str="nguyeen đức anh";
$mtk="#nguyeen#"; // tôi sử dụng # làm dấu phân cách trong mẫu tìm kiếm này
$tt="nguyễn";
echo preg_replace($mtk,$tt,$str); // kết quả là nguyễn đức anh

#5. Cách sử dụng preg_match_all()

Hàm preg_match_all sẽ nói cho bạn biết có bao nhiêu lần mẫu tìm kiếm được tìm thấy trong chuỗi.

Ví dụ tôi cần đếm số lần ký tự n xuất hiện trong một tên nào đấy, không phân biệt nó là hoa hay thường:

$str="Nguyễn Đức Anh";
$mtk="/n/i";
echo preg_match_all($mtk, $str); // kết quả sẽ là 3

#6. Các tùy chọn điều chỉnh trong Regex

Các tùy chọn điều chỉnh được dùng để yêu cầu một câu lệnh tìm kiếm thực hiện một kiểu tìm kiếm nhất định.

Các tùy chọn Mô tả
i Thực hiện tìm kiếm không phân biệt chữ hoa, chữ thường
m Thực hiện tìm kiếm nhiều dòng (các mẫu tìm kiếm phần đầu hoặc phần cuối của một chuỗi sẽ khớp với phần đầu hoặc phần cuối của mỗi dòng)
u Cho phép đối sánh chính xác mẫu UTF-8