PHP - Regular Expressions

Biểu thức chính quy không gì khác ngoài một chuỗi hoặc mẫu các ký tự. Chúng cung cấp nền tảng cho chức năng khớp mẫu.

Bằng cách sử dụng biểu thức chính quy, bạn có thể tìm kiếm một chuỗi cụ thể bên trong một chuỗi khác, bạn có thể thay thế một chuỗi bằng một chuỗi khác và bạn có thể chia một chuỗi thành nhiều phần.

PHP cung cấp các hàm cụ thể cho hai bộ hàm biểu thức chính quy, mỗi bộ tương ứng với một loại biểu thức chính quy nhất định. Bạn có thể sử dụng bất kỳ bộ nào trong số đó dựa trên sự thoải mái của bạn.

  • POSIX Regular Expressions
  • PERL Style Regular Expressions

POSIX Regular Expressions

Cấu trúc của một biểu thức chính quy POSIX không khác biệt nhiều so với cấu trúc của một biểu thức số học điển hình: các yếu tố khác nhau (toán tử) được kết hợp để tạo thành các biểu thức phức tạp hơn.

Biểu thức chính quy đơn giản nhất là một biểu thức khớp với một ký tự duy nhất, chẳng hạn như g, trong các chuỗi như g, haggle, hoặc bag.

Hãy giải thích một vài khái niệm được sử dụng trong biểu thức chính quy POSIX. Sau đó, chúng ta sẽ giới thiệu cho bạn các chức năng liên quan đến biểu thức chính quy.

Brackets

Dấu ngoặc vuông ([]) có một ý nghĩa đặc biệt khi được sử dụng trong ngữ cảnh của biểu thức chính quy. Chúng được sử dụng để tìm một dải ký tự.

Sr.No Expression & Description
1 [0-9] It matches any decimal digit from 0 through 9.
2 [a-z] It matches any character from lower-case a through lowercase z.
3 [A-Z] It matches any character from uppercase A through uppercase Z.
4 [a-Z] It matches any character from lowercase a through uppercase Z.

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

Quantifiers

Tần suất hoặc vị trí của các chuỗi ký tự được đặt trong dấu ngoặc và các ký tự đơn có thể được biểu thị bằng một ký tự đặc biệt. Mỗi ký tự đặc biệt đều có ý nghĩa cụ thể. Các cờ +, *, ?, {phạm vi int.}, và $ đều theo sau một chuỗi ký tự.

Sr.No Expression & Description
1 p+ It matches any string containing at least one p.
2 p* It matches any string containing zero or more p's.
3 p? It matches any string containing zero or one p's.
4 p{ N } It matches any string containing a sequence of N p's
5 p{2,3} It matches any string containing a sequence of two or three p's.
6 p{2, } It matches any string containing a sequence of at least two p's.
7 p$ It matches any string with p at the end of it.
8 ^ p It matches any string with p at the beginning of it.

Examples

Các ví dụ sau sẽ giúp bạn hiểu rõ hơn về việc khớp các ký tự.

Sr.No Expression & Description
1 [^a-zA-Z] It matches any string not containing any of the characters ranging from a through z and A through Z.
2 p.p It matches any string containing p, followed by any character, in turn followed by another p.
3 ^.{2}$ It matches any string containing exactly two characters.
4 <b>(.*)</b> It matches any string enclosed within <b> and </b>.
5 p(hp)* It matches any string containing a p followed by zero or more instances of the sequence php.

Predefined Character Ranges

Để thuận tiện cho lập trình của bạn, có một số phạm vi ký tự đã được định nghĩa trước, còn được gọi là các lớp ký tự. Các lớp ký tự xác định một phạm vi toàn bộ các ký tự, ví dụ, bảng chữ cái hoặc một tập hợp số nguyên −

Sr.No Expression & Description
1 [[:alpha:]] It matches any string containing alphabetic characters aA through zZ.
2 [[:digit:]] It matches any string containing numerical digits 0 through 9.
3 [[:alnum:]] It matches any string containing alphanumeric characters aA through zZ and 0 through 9.
4 [[:space:]] It matches any string containing a space.

PHP's Regexp POSIX Functions

PHP hiện cung cấp bảy hàm để tìm kiếm chuỗi sử dụng biểu thức chính quy theo kiểu POSIX −

Sr.No Function & Description
1 ereg() The ereg() function searches a string specified by string for a string specified by pattern, returning true if the pattern is found, and false otherwise.
2 ereg_replace() The ereg_replace() function searches for string specified by pattern and replaces pattern with replacement if found.
3 eregi() The eregi() function searches throughout a string specified by pattern for a string specified by string. The search is not case sensitive.
4 eregi_replace() The eregi_replace() function operates exactly like ereg_replace(), except that the search for pattern in string is not case sensitive.
5 split() The split() function will divide a string into various elements, the boundaries of each element based on the occurrence of pattern in string.
6 spliti() The spliti() function operates exactly in the same manner as its sibling split(), except that it is not case sensitive.
7 sql_regcase() The sql_regcase() function can be thought of as a utility function, converting each character in the input parameter string into a bracketed expression containing two characters.

PERL Style Regular Expressions

Biểu thức chính quy theo kiểu Perl tương tự như các đối tác POSIX của chúng. Cú pháp POSIX có thể được sử dụng gần như thay thế cho các hàm biểu thức chính quy theo kiểu Perl. Thực tế, bạn có thể sử dụng bất kỳ bộ định lượng nào được giới thiệu trong phần POSIX trước đó.

Hãy giải thích một vài khái niệm được sử dụng trong biểu thức chính quy PERL. Sau đó, chúng tôi sẽ giới thiệu cho bạn các hàm liên quan đến biểu thức chính quy.

Meta characters

Một ký tự meta đơn giản là một ký tự chữ cái được theo sau bởi một dấu gạch chéo ngược, điều này giúp kết hợp đó có một ý nghĩa đặc biệt.

Ví dụ, bạn có thể tìm kiếm các số tiền lớn bằng cách sử dụng ký tự meta '\d': /([\d]+)000/ , ở đây \d sẽ 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 Biểu thức Chính quy theo kiểu PERL.

Character		Description
.              a single character
\s             a whitespace character (space, tab, newline)
\S             non-whitespace character
\d             a digit (0-9)
\D             a non-digit
\w             a word character (a-z, A-Z, 0-9, _)
\W             a non-word character
[aeiou]        matches a single character in the given set
[^aeiou]       matches a single character outside the given set
(foo|bar|baz)  matches any of the alternatives specified

Modifiers

Có nhiều bộ sửa đổi có sẵn giúp công việc của bạn với regexps trở nên dễ dàng hơn, như độ nhạy với chữ hoa chữ thường, tìm kiếm trong nhiều dòng, v.v.

Modifier	Description
i 	Makes the match case insensitive
m 	Specifies that if the string has newline or carriage
	return characters, the ^ and $ operators will now
	match against a newline boundary, instead of a
	string boundary
o 	Evaluates the expression only once
s 	Allows use of . to match a newline character
x 	Allows you to use white space in the expression for clarity
g 	Globally finds all matches
cg 	Allows a search to continue even after a global match fails

PHP's Regexp PERL Compatible Functions

PHP cung cấp các hàm sau để tìm kiếm chuỗi sử dụng biểu thức chính quy tương thích với Perl −

Sr.No Function & Description
1 preg_match() The preg_match() function searches string for pattern, returning true if pattern exists, and false otherwise.
2 preg_match_all() The preg_match_all() function matches all occurrences of pattern in string.
3 preg_replace() The preg_replace() function operates just like ereg_replace(), except that regular expressions can be used in the pattern and replacement input parameters.
4 preg_split() The preg_split() function operates exactly like split(), except that regular expressions are accepted as input parameters for pattern.
5 preg_grep() The preg_grep() function searches all elements of input_array, returning all elements matching the regexp pattern.
6 preg_ quote() Quote regular expression characters