Cộng đồng chia sẻ tri thức Doc24.vn

Regular Expression trong PHP

Gửi bởi: Phạm Thọ Thái Dương vào ngày 2019-10-24 09:58:01

Mục lục
* * * * *

POSIX Regular Expression trong PHP

Cấu trúc của một POSIX regular expression là không giống với cấu trúc của một biểu thức số học đặc trưng: các phần tử đa dạng (các toán tử) được kết hợp để cấu thành một expression phức tạp hơn.

Regular Expression đơn giản nhất là một Regular Expression mà so khớp với một ký tự đơn, ví dụ g, bên trong một chuỗi như g, haggle hoặc bag.

Dưới đây là phần giải thích cho một số khái niệm đang được sử dụng trong POSIX regular expression. Sau đó, chúng tôi sẽ giới thiệu cho bạn về Regular Expression liên quan tới các hàm.

Các dấu ngoặc vuông

Các dấu ngoặc vuông ([]) có ý nghĩa đặc biệt khi được sử dụng trong ngữ cảnh của các Regular Expression. Chúng được sử dụng để tìm một dãy ký tự.

Các dãy được chỉ ở trên là dãy chung; bạn cũng có thể sử dụng dãy [0-3] để so khớp với bất kỳ chữ số từ 0 tới 3, hoặc dãy [b-v] để so khớp với bất kỳ ký tự chữ thường nào từ b tới v.

Quantifier trong PHP

Tần suất và vị trí của dãy ký tự hoặc một ký tự đơn được bao trong dấu ngoặc vuông có thể được diễn tả bởi một ký tự đặc biệt. Mỗi ký tự đặc biệt có một ý nghĩa cụ thể. Các +, *, ?, {int. range}, và $ theo sau một dãy ký tự.

Ví dụ

Dưới đây là các ví dụ giúp bạn hiểu rõ hơn về các khái niệm so khớp các ký tự:

Dãy ký tự được định nghĩa trước trong PHP

Giúp bạn tiện lợi hơn trong khi lập trình, một số dãy ký tự được định nghĩa trước, mà còn được biết đến như là các lớp Character, là có sẵn cho bạn. Các lớp Character xác định một dãy toàn bộ các ký tự, ví dụ: bộ chữ cái hoặc một tập hợp integer.

Hàm tích hợp Regexp POSIX trong PHP

Hiện tại, PHP cung cấp 7 hàm để tìm kiếm các chuỗi bởi sử dụng POSIX regular expression. Dưới đây là bảng liệt kê các hàm này.

Các hàm liệt kê trong bảng này đều đã cũ và mình khuyên bạn không nên sử dụng các hàm này nữa.

Nếu bạn vẫn sử dụng, bạn sẽ bị một lỗi dạng: Deprecated: Function tên_hàm() is deprecated in ...

Để thay thế, bạn nên sử dụng các hàm tích hợp với Regexp PERL trong bảng bên dưới.

PERL-style Regular Expression trong PHP

PERL-style regular expression là tương tự như dạng POSIX. Cú pháp POSIX hầu như có thể được sử dụng cho các hàm PERL-style regular expression. Sự thực là, bạn có thể sử dụng bất kỳ quantifier đã được giới thiệu ở trên.

Dưới đây, chúng tôi giải thích một số khái niệm được sử dụng trong PERL regular expression. Sau đó sẽ là các hàm liên quan tới kiểu regular expression này.

Ký tự meta trong PHP

Về cơ bản, một ký tự meta là một ký tự chữ cái được đặt trước bởi một dấu chéo ngược để tạo thành một tổ hợp có ý nghĩa đặc biệt.

Ví dụ, bạn có thể tim kiếm các tổng lượng tiền lớn bởi sử dụng ký tự meta là '\d': /([\d]+)000/, ở đây \d tìm kiếm bất kỳ chuỗi ký tự số nào.

Dưới đây là danh sách các ký tự meta có thể được sử dụng trong PERL-style regular expression.

Ký tự		Miêu tả
.              một ký tự đơn
\s             một ký tự khoảng trắng (space, tab, newline (dòng mới))
\S             ký tự không phải là khoảng trắng
\d             một chữ số (0-9)
\D             không phải là chữ số
\w             một ký tự từ (a-z, A-Z, 0-9, _)
\W             không phải là ký tự từ
[aeiou]        so khớp với một ký tự đơn trong tập đã cho
[^aeiou]       so khớp với một ký tự đơn bên ngoài tập đã cho
(foo|bar|baz)  so khớp với bất kỳ ký tự nào đã cho

Modifier trong PHP

Một số modifier là có sẵn giúp bạn làm việc với Regexp dễ dàng hơn, như phân biệt kiểu chữ, tìm kiếm trong nhiều dòng, …

Modifier	      Miêu tả
i            - Làm cho hành động so khớp là không phân biệt
             kiểu chữ (case insensitive).
             
m            - Xác định rằng nếu chuỗi có các ký tự newline (dòng mới) hoặc
             carriage return, thì các toán tử ^ và $ sẽ so khớp
	         với newline (dòng mới) boundary, thay vì so khớp với string boundary.	         
o            - Chỉ ước lượng expression một lần.
s            - Cho phép sử dụng . để so khớp với ký tự newline (dòng mới).
x            - Cho phép bạn sử dụng khoảng trắng trong expression.
g            - Tìm kiếm toàn cục (global) cho mọi so khớp.
cg           - Cho phép tiếp tục tìm kiếm ngay cả sau khi hoạt động tìm
             kiếm toàn cục thất bại.

Hàm tích hợp với Regexp PERL trong PHP

PHP cung cấp các hàm sau để tìm kiếm các chuỗi sử dụng PERL regular expression.

Lượt xem: 260