PHP - Biểu thức chính quy

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

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 này bằng một chuỗi khác và bạn có thể chia một chuỗi thành nhiều đoạn.

PHP cung cấp các hàm cụ thể cho hai nhóm hàm biểu thức chính quy, mỗi hàm 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ỳ cái nào trong số chúng dựa trên sự thoải mái của bạn.

  • Biểu thức chính quy POSIX
  • Biểu thức chính quy kiểu PERL

Biểu thức chính quy POSIX

Cấu trúc của một biểu thức chính quy POSIX không khác với cấu trúc của một biểu thức số học điển hình: các phần tử (toán tử) khác nhau đượ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ự đơn lẻ, chẳng hạn như g, bên trong các chuỗi như g, haggle hoặc bag.

Hãy đưa ra lời giải thích cho một số khái niệm đang được sử dụng trong biểu thức chính quy POSIX. 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.

Dấu ngoặc

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

Sr.No Biểu thức & Mô tả
1

[0-9]

Nó khớp với bất kỳ chữ số thập phân nào từ 0 đến 9.

2

[a-z]

Nó khớp với bất kỳ ký tự nào từ chữ thường a đến chữ thường z.

3

[A-Z]

Nó khớp với bất kỳ ký tự nào từ chữ hoa A đến chữ hoa Z.

4

[a-Z]

Nó khớp với bất kỳ ký tự nào từ chữ thường a đến chữ hoa Z.

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

Bộ định lượng

Tần suất hoặc vị trí của chuỗi ký tự trong ngoặc và các ký tự đơn có thể được ký hiệu bằng một ký tự đặc biệt. Mỗi ký tự đặc biệt có một nội hàm cụ thể. Dấu +, *,?, {Int. range} và $ cờ đều tuân theo một chuỗi ký tự.

Sr.No Biểu thức & Mô tả
1

p+

Nó khớp với bất kỳ chuỗi nào có chứa ít nhất một p.

2

p*

Nó khớp với bất kỳ chuỗi nào chứa không hoặc nhiều p.

3

p?

Nó khớp với bất kỳ chuỗi nào có chứa 0 hoặc một p.

4

p{N}

Nó khớp với bất kỳ chuỗi nào có chứa chuỗi N của p

5

p{2,3}

Nó khớp với bất kỳ chuỗi nào có chứa một chuỗi hai hoặc ba p.

6

p{2, }

Nó khớp với bất kỳ chuỗi nào có chứa ít nhất hai p.

7

p$

Nó khớp với bất kỳ chuỗi nào có p ở cuối nó.

số 8

^p

Nó khớp với bất kỳ chuỗi nào có p ở đầu nó.

Ví dụ

Các ví dụ sau sẽ rõ ràng các khái niệm của bạn về các ký tự đối sánh.

Sr.No Biểu thức & Mô tả
1

[^a-zA-Z]

Nó khớp với bất kỳ chuỗi nào không chứa bất kỳ ký tự nào từ a đến z và A đến Z.

2

p.p

Nó khớp với bất kỳ chuỗi nào chứa p, theo sau là bất kỳ ký tự nào, lần lượt theo sau là p khác.

3

^.{2}$

Nó khớp với bất kỳ chuỗi nào chứa chính xác hai ký tự.

4

<b>(.*)</b>

Nó khớp với bất kỳ chuỗi nào được bao trong <b> và </b>.

5

p(hp)*

Nó khớp với bất kỳ chuỗi nào chứa ap theo sau là không hoặc nhiều phiên bản của chuỗi php.

Phạm vi ký tự được xác định trước

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

Sr.No Biểu thức & Mô tả
1

[[:alpha:]]

Nó khớp với bất kỳ chuỗi nào có chứa các ký tự chữ cái aA đến zZ.

2

[[:digit:]]

Nó khớp với bất kỳ chuỗi nào có chứa các chữ số từ 0 đến 9.

3

[[:alnum:]]

Nó khớp với bất kỳ chuỗi nào có chứa các ký tự chữ và số từ aA đến zZ và 0 đến 9.

4

[[:space:]]

Nó khớp với bất kỳ chuỗi nào có chứa khoảng trắng.

Các chức năng Regexp POSIX của PHP

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

Sr.No Mô tả chức năng
1 ereg ()

Hàm ereg () tìm kiếm một chuỗi được chỉ định bởi chuỗi cho một chuỗi được chỉ định bởi mẫu, trả về true nếu tìm thấy mẫu và false nếu không.

2 ereg_replace ()

Hàm ereg_replace () tìm kiếm chuỗi được chỉ định bởi mẫu và thay thế mẫu bằng thay thế nếu tìm thấy.

3 erygi ()

Hàm Rougi () tìm kiếm trong suốt một chuỗi được chỉ định bởi mẫu cho một chuỗi được chỉ định bởi chuỗi. Tìm kiếm không phân biệt chữ hoa chữ thường.

4 erygi_replace ()

Hàm ergi_replace () hoạt động giống như ereg_replace (), ngoại trừ việc tìm kiếm mẫu trong chuỗi không phân biệt chữ hoa chữ thường.

5 tách ()

Hàm split () sẽ chia một chuỗi thành nhiều phần tử khác nhau, ranh giới của mỗi phần tử dựa trên sự xuất hiện của mẫu trong chuỗi.

6 spliti ()

Hàm spliti () hoạt động giống hệt như hàm split (), ngoại trừ việc nó không phân biệt chữ hoa chữ thường.

7 sql_regcase ()

Hàm sql_regcase () có thể được coi là một hàm tiện ích, chuyển đổi mỗi ký tự trong chuỗi tham số đầu vào thành một biểu thức trong ngoặc có chứa hai ký tự.

Biểu thức chính quy kiểu PERL

Biểu thức chính quy 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 nhau với các hàm biểu thức chính quy kiểu Perl. Trên 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 đưa ra lời giải thích cho một số khái niệm đang đượ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.

Ký tự meta

Một ký tự meta chỉ đơn giản là một ký tự chữ cái đứng trước dấu gạch chéo ngược có tác dụng tạo cho sự kết hợp một ý nghĩa đặc biệt.

Ví dụ: bạn có thể tìm kiếm các khoản 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.

Sau đây là danh sách các ký tự meta có thể được sử dụng trong Biểu thức chính quy 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

Bổ ngữ

Một số công cụ sửa đổi có sẵn có thể làm cho công việc của bạn với regexps dễ dàng hơn nhiều, như phân biệt 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

Các chức năng tương thích với Regexp PERL của PHP

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

Sr.No Mô tả chức năng
1 preg_match ()

Hàm preg_match () tìm kiếm chuỗi cho mẫu, trả về true nếu tồn tại mẫu và false nếu không.

2 preg_match_all ()

Hàm preg_match_all () khớp với tất cả các lần xuất hiện của mẫu trong chuỗi.

3 preg_replace ()

Hàm preg_replace () hoạt động giống như ereg_replace (), ngoại trừ các biểu thức chính quy có thể được sử dụng trong các tham số đầu vào mẫu và thay thế.

4 preg_split ()

Hàm preg_split () hoạt động giống như split (), ngoại trừ các biểu thức chính quy được chấp nhận làm tham số đầu vào cho mẫu.

5 preg_grep ()

Hàm preg_grep () tìm kiếm tất cả các phần tử của input_array, trả về tất cả các phần tử khớp với mẫu regexp.

6 preg_ quote ()

Trích dẫn các ký tự biểu thức chính quy