PHP có hai bộ hàm biểu thức chính quy. các chức năng ereg và preg. Các hàm preg hỗ trợ cú pháp regex đầy đủ tính năng hiện đại dựa trên thư viện PCRE và được khuyến nghị cho mã mới. Kể từ PHP 7. 3. 0 chúng dựa trên PCRE2
Các hàm ereg triển khai các biểu thức chính quy POSIX cung cấp một cú pháp giới hạn. Các hàm ereg không được dùng nữa, nhưng RegexBuddy vẫn hỗ trợ đầy đủ chúng để bạn có thể duy trì mã hiện có hoặc chuyển đổi các biểu thức chính quy của mình từ hương vị ereg của PHP sang hương vị preg
Xem mã hóa với Regex có thể dễ dàng như thế nào
Trước tiên, hãy sử dụng RegexBuddy để xác định biểu thức chính quy hoặc truy xuất biểu thức chính quy được lưu trong thư viện RegexBuddy. Dựa vào phân tích regex rõ ràng của RegexBuddy, được cập nhật liên tục khi bạn xây dựng mẫu, thay vì tự mình xử lý cú pháp regex khó hiểu. Trợ giúp chi tiết về cú pháp đó luôn chỉ bằng một cú nhấp chuột
Nếu bạn đã sao chép một biểu thức chính quy được viết cho một ngôn ngữ lập trình khác, chỉ cần dán nó vào RegexBuddy, chọn ngôn ngữ gốc, sau đó chuyển đổi biểu thức chính quy đó thành phiên bản cụ thể của PHP và tập hợp các hàm bạn đang sử dụng. Bạn cũng có thể chuyển đổi từ phiên bản PHP này sang phiên bản khác và từ cú pháp ereg cũ sang cú pháp preg hiện đại. Nếu bạn đang viết một thư viện mã cần hoạt động với nhiều phiên bản PHP, hãy so sánh biểu thức chính quy của bạn giữa các phiên bản PHP đó để đảm bảo rằng nó sẽ hoạt động chính xác như nhau với tất cả chúng. RegexBuddy biết tất cả các tính năng và tất cả các lỗi trong tất cả các phiên bản PCRE từ PHP 4 của năm 2003. 3. 3 cho đến PHP 8 mới nhất. 1. 12
Nếu bạn đã tạo một biểu thức chính quy mới, hãy kiểm tra và gỡ lỗi nó trong RegexBuddy trước khi sử dụng nó trong mã nguồn PHP của bạn. Kiểm tra từng biểu thức chính trong hộp cát an toàn của RegexBuddy mà không gặp rủi ro về dữ liệu quý giá. Nhanh chóng áp dụng biểu thức chính quy cho nhiều loại dữ liệu đầu vào và mẫu mà không cần phải tạo đầu vào đó thông qua tập lệnh của bạn
Cuối cùng, hãy để RegexBuddy tạo một đoạn mã nguồn mà bạn có thể sao chép và dán trực tiếp vào bất kỳ trình soạn thảo mã IDE hoặc PHP nào mà bạn sử dụng. Chỉ cần chọn những gì bạn muốn sử dụng biểu thức chính quy và đoạn mã đầy đủ chức năng đã sẵn sàng. Bạn có thể thay đổi tên của các biến và tham số để phù hợp với phong cách đặt tên của bạn hoặc tình hình hiện tại mà RegexBuddy tự động ghi nhớ
Đừng bận tâm cố nhớ phương thức nào cần gọi hoặc tham số nào cần truyền. Và đừng lo lắng về việc thoát đúng dấu gạch chéo ngược và dấu ngoặc kép. Chỉ cần cho RegexBuddy biết bạn muốn làm gì và bạn sẽ nhận được mã PHP thích hợp ngay lập tức. Bất cứ điều gì có thể được thực hiện. kiểm tra một chuỗi để khớp, trích xuất kết quả tìm kiếm, xác thực đầu vào, tìm kiếm và thay thế, tách chuỗi, v.v.
Biểu thức chính quy là một chuỗi các ký tự tạo thành một mẫu tìm kiếm. Khi bạn tìm kiếm dữ liệu trong một 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
Một 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, các 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
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à một công cụ sửa đổi làm cho 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, bạn nên 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 hàm preg_match[]
, preg_match_all[]
và preg_replace[]
là một số hàm được sử dụng phổ biến nhất
Sử dụng preg_match[]
Hàm preg_match[]
sẽ cho bạn biết liệu một chuỗi có chứa các kết quả khớp của một mẫu hay không
Thí dụ
Sử dụng biểu thức chính quy để thực hiện tìm kiếm "w3schools" trong một chuỗi không phân biệt chữ hoa chữ thường
$str = "Truy cập W3Schools";
$pattern = "/w3schools/i";
tiếng vang preg_match[$pattern, $str];
?>
Sử dụng preg_match_all[]
Hàm preg_match_all[]
sẽ cho bạn biết có bao nhiêu kết quả phù hợp được tìm thấy cho một mẫu trong chuỗi
Thí 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 = "Mưa ở TÂY BAN NHA chủ yếu rơi trên đồng bằng. “;
$pattern = "/ain/i";
tiếng vang preg_match_all[$pattern, $str];
?>
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
Thí 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 W3Schools trong một chuỗi
$str = "Truy cập Microsoft. “;
$pattern = "/microsoft/i";
echo preg_replace[$pattern, "W3Schools", $str]; . "
?>
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
Công cụ sửa đổi Mô tảiThực hiện tìm kiếm không phân biệt chữ hoa chữ thườngmThự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 chuỗi sẽ khớp với phần đầu hoặc phần cuối của mỗi dòng]uCho phép khớp chính xác các mẫu được mã hóa UTF-8Các mẫu biểu thức chính quy
Dấu ngoặc vuông được sử dụng để tìm một dãy ký tự
Biểu thứcMô tả[abc]Tìm một ký tự trong các tùy chọn nằm giữa các dấu ngoặc[^abc]Tìm bất kỳ ký tự nào KHÔNG nằm trong các dấu ngoặc[0-9]Tìm một ký tự trong phạm vi 0 đến 9Siêu ký tự
Siêu ký tự là ký tự có ý nghĩa đặc biệt
Siêu ký tựMô tả. Tìm một kết quả phù hợp cho bất kỳ một trong các mẫu được phân tách bằng. như trong. con mèo. chú chó. cá. Chỉ tìm một phiên bản của bất kỳ ký tự nào^Tìm kết quả khớp ở đầu chuỗi như trong. ^Hello$Tìm một kết quả khớp ở cuối chuỗi như trong. World$\dTìm một chữ số\Tìm một ký tự khoảng trắng\Tìm một từ khớp ở đầu một từ như thế này. \bWORD hoặc ở cuối từ như thế này. WORD\b\uxxxxTìm ký tự Unicode được chỉ định bởi số thập lục phân xxxxđịnh lượng
Định lượng xác định đại lượng
QuantifierDescriptionn+Khớp với bất kỳ chuỗi nào chứa ít nhất một nn*Khớp với bất kỳ chuỗi nào chứa 0 hoặc nhiều lần xuất hiện của nn?Khớp với bất kỳ chuỗi nào chứa 0 hoặc một lần xuất hiện của nn{x}Khớp với bất kỳ chuỗi nào chứa một chuỗi X n'snGhi chú. 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 khỏi 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 các 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 được sử dụng làm đối sánh