Biểu thức chính quy PHP
Biểu thức chính quy là gì?
Biểu thức chính quy 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 văn bản, bạn có thể sử dụng mẫu tìm kiếm này để mô tả những gì bạn đang tìm kiếm.
Biểu thức chính quy có thể là một ký tự đơn hoặc một mẫu phức tạp hơn.
Biểu thức chính quy có thể được sử dụng để thực hiện tất cả các loại hoạt động tìm kiếm văn bản và thay thế văn bản.
Cú pháp
Trong PHP, biểu thức chính quy là các chuỗi bao gồm các dấu phân cách, mẫu và các công cụ sửa đổi tùy chọn.
$exp = "/w3schools/i";
Trong ví dụ trên, /
là dấu phân cách , w3schools là mẫu đang được tìm kiếm và i
là công cụ sửa đổi giúp tìm kiếm không phân biệt chữ hoa chữ thường.
Dấu phân cách có thể là bất kỳ ký tự nào không phải là chữ cái, số, dấu gạch chéo ngược hoặc dấu cách. Dấu phân cách phổ biến nhất là dấu gạch chéo lên (/), nhưng khi mẫu của bạn chứa dấu gạch chéo lên, sẽ thuận tiện hơn khi chọn các dấu phân cách khác như # hoặc ~.
Hàm biểu thức chính quy
PHP cung cấp nhiều hàm cho phép bạn sử dụng các biểu thức chính quy.
Các chức năng phổ biến nhất là:
Function | Description |
---|---|
preg_match() | Returns 1 if the pattern was found in the string and 0 if not |
preg_match_all() | Returns the number of times the pattern was found in the string, which may also be 0 |
preg_replace() | Returns a new string where matched patterns have been replaced with another string |
Sử dụng preg_match()
Hàm preg_match()
sẽ cho bạn biết liệu một chuỗi có chứa mẫu khớp hay không.
Ví dụ
Sử dụng biểu thức chính quy để thực hiện tìm kiếm không phân biệt chữ hoa chữ thường cho "w3schools" trong một chuỗi:
$str = "Visit W3Schools";
$pattern = "/w3schools/i";
echo preg_match($pattern, $str);
Hãy tự mình thử »Sử dụng preg_match_all()
Hàm preg_match_all()
sẽ cho bạn biết có bao nhiêu kết quả khớp được tìm thấy cho một mẫu trong chuỗi.
Ví dụ
Sử dụng biểu thức chính quy để đếm số lần xuất hiện của "ain" trong một chuỗi không phân biệt chữ hoa chữ thường:
$str = "The rain in SPAIN falls mainly on the plains.";
$pattern = "/ain/i";
echo preg_match_all($pattern, $str);
Hãy tự mình thử »Sử dụng preg_replace()
Hàm preg_replace()
sẽ thay thế tất cả các kết quả khớp của mẫu trong một chuỗi bằng một chuỗi khác.
Ví dụ
Sử dụng biểu thức chính quy không phân biệt chữ hoa chữ thường để thay thế Microsoft bằng Example.com.vn trong một chuỗi:
$str = "Visit Microsoft!";
$pattern = "/microsoft/i";
echo preg_replace($pattern, "W3Schools", $str);
Hãy tự mình thử » Công cụ sửa đổi biểu thức chính quy
Công cụ sửa đổi có thể thay đổi cách thực hiện tìm kiếm.
Modifier | Description | Try it |
---|---|---|
i | Performs a case-insensitive search | Try it » |
m | Performs a multiline search (patterns that search for a match at the beginning or end of a string will now match the beginning or end of each line ) | Try it » |
u | Enables correct matching of UTF-8 encoded patterns |
Mẫu biểu thức chính quy
Dấu ngoặc được sử dụng để tìm một loạt các ký tự:
Expression | Description | Try it |
---|---|---|
[abc] | Find one or many of the characters inside the brackets | Try it » |
[^abc] | Find any character NOT between the brackets | Try it » |
[a-z] | Find any character alphabetically between two letters | Try it » |
[A-z] | Find any character alphabetically between a specified upper-case letter and a specified lower-case letter | Try it » |
[A-Z] | Find any character alphabetically between two upper-case letters. | Try it » |
[123] | Find one or many of the digits inside the brackets | Try it » |
[0-5] | Find any digits between the two numbers | Try it » |
[0-9] | Find any digits | Try it » |
Siêu ký tự
Siêu ký tự là những ký tự có ý nghĩa đặc biệt:
Metacharacter | Description | Try it |
---|---|---|
| | Find a match for any one of the patterns separated by | as in: cat|dog|fish | Try it » |
. | Find any character | Try it » |
^ | Finds a match as the beginning of a string as in: ^Hello | Try it » |
$ | Finds a match at the end of the string as in: World$ | Try it » |
\d | Find any digits | Try it » |
\D | Find any non-digits | Try it » |
\s | Find any whitespace character | Try it » |
\S | Find any non-whitespace character | Try it » |
\w | Find any alphabetical letter (a to Z) and digit (0 to 9) | Try it » |
\W | Find any non-alphabetical and non-digit character | Try it » |
\b | Find a match at the beginning of a word like this: \bWORD, or at the end of a word like this: WORD\b | Try it » |
\uxxxx | Find the Unicode character specified by the hexadecimal number xxxx | Try it » |
định lượng
Bộ định lượng xác định số lượng:
Quantifier | Description | Try it |
---|---|---|
n + | Matches any string that contains at least one n | Try it » |
n * | Matches any string that contains zero or more occurrences of n | |
n ? | Matches any string that contains zero or one occurrences of n | |
n { 3 } | Matches any string that contains a sequence of 3 n 's | Try it » |
n { 2 , 5 } | Matches any string that contains a sequence of at least 2, but not more that 5 n 's | Try it » |
n {3,} | Matches any string that contains a sequence of at least 3 n 's | Try it » |
Lưu ý: Nếu biểu thức của bạn cần tìm kiếm một trong các ký tự đặc biệt, bạn có thể sử dụng dấu gạch chéo ngược ( \ ) để thoát chúng. Ví dụ: để tìm kiếm một hoặc nhiều dấu chấm hỏi, bạn có thể sử dụng biểu thức sau: $pattern = '/\?+/';
Nhóm
Bạn có thể sử dụng dấu ngoặc đơn ( )
để áp dụng bộ định lượng cho toàn bộ mẫu. Chúng cũng có thể được sử dụng để chọn các phần của mẫu để sử dụng làm đối sánh.
Ví dụ
Sử dụng tính năng nhóm để tìm kiếm từ "banana" bằng cách tìm kiếm ba theo sau là hai trường hợp na :
$str = "Apples and bananas.";
$pattern = "/ba(na){2}/i";
echo preg_match($pattern, $str);
Hãy tự mình thử »Hoàn thành tham chiếu RegExp
Để có tài liệu tham khảo đầy đủ, hãy truy cập Tài liệu tham khảo biểu thức chính quy PHP hoàn chỉnh của chúng tôi.
Tham chiếu chứa các mô tả và ví dụ về tất cả các hàm Biểu thức chính quy.