Kết hợp regex PHP

PHP hỗ trợ các biểu thức chính quy thông qua việc sử dụng thư viện PCRE [Biểu thức chính quy tương thích Perl] được kích hoạt trong hầu hết các cài đặt PHP. Khi gọi bất kỳ phương thức nào bên dưới, PHP yêu cầu mỗi mẫu bắt đầu và kết thúc bằng cùng một dấu phân cách để phân biệt nó với một chuỗi bình thường, với dấu phân cách phổ biến nhất là ký tự gạch chéo lên phía trước

Ví dụ: bạn sẽ viết biểu thức chính quy "\w+" thành "/\w+/" trong PHP để biểu thị một biểu thức khớp với một hoặc nhiều ký tự chữ và số

Phù hợp với một chuỗi

Trong PHP, bạn có thể sử dụng hàm preg_match[] để kiểm tra xem một biểu thức chính quy có khớp với một chuỗi cụ thể hay không. Lưu ý rằng hàm này dừng sau lần khớp đầu tiên, vì vậy, hàm này phù hợp nhất để kiểm tra biểu thức chính quy hơn là trích xuất dữ liệu

Phương pháp

$has_matches = preg_match[$pattern, $input_str, $matches_out]

Thí dụ

// Lets use a regular expression to match a date string. Ignore // the output since we are just testing if the regex matches. $regex = "/[a-zA-Z]+ \d+/"; if [preg_match[$regex, "June 24"]] { // Indeed, the expression "[a-zA-Z]+ \d+" matches the date string echo "Found a match!"; } else { // If preg_match[] returns false, then the regex does not // match the string echo "The regex pattern does not match. :["; }

Chụp nhóm

Không giống như hàm preg_match[] ở trên, chúng ta có thể sử dụng hàm preg_match_all[] để thực hiện tìm kiếm toàn bộ chuỗi đầu vào. Nếu preg_match_all[] trả về true, thì bạn có thể lặp lại mảng được chỉ định bởi $matches_out

Phương pháp

$has_matches = preg_match_all[$pattern, $input_str, $matches_out]

Thí dụ

"/\w+/"0

Tìm và thay thế chuỗi

Đôi khi, thật tiện lợi khi tìm và thay thế một chuỗi bằng cách sử dụng các biểu thức thông thường, chẳng hạn như để thay thế tất cả các trường hợp của một miền email cũ bằng một miền mới hoặc để hoán đổi thứ tự của một số văn bản. Bạn có thể làm điều này với chức năng "/\w+/"1

Biểu thức chính quy thường được gọi là biểu thức chính quy [regex] là một chuỗi ký tự mô tả một mẫu tìm kiếm đặc biệt ở dạng chuỗi văn bản. Về cơ bản, chúng được sử dụng trong các thuật toán thế giới lập trình để khớp một số mẫu được xác định lỏng lẻo để đạt được một số nhiệm vụ có liên quan. Đôi khi biểu thức chính quy được hiểu là ngôn ngữ lập trình nhỏ với ký hiệu mẫu cho phép người dùng phân tích chuỗi văn bản. Trình tự chính xác của các ký tự là không thể đoán trước, do đó, biểu thức chính quy giúp tìm nạp các chuỗi cần thiết dựa trên định nghĩa mẫu

Biểu thức chính quy là một cách nhỏ gọn để mô tả một mẫu chuỗi khớp với một lượng văn bản cụ thể. Như bạn đã biết, PHP là ngôn ngữ mã nguồn mở thường được sử dụng để tạo trang web, nó cung cấp các hàm biểu thức chính quy như một công cụ quan trọng. Giống như PHP, nhiều ngôn ngữ lập trình khác có cách triển khai biểu thức chính quy của riêng chúng. Điều này cũng tương tự với các ứng dụng khác, có hỗ trợ biểu thức chính quy riêng có nhiều cú pháp khác nhau. Nhiều ngôn ngữ và công cụ hiện đại có sẵn áp dụng biểu thức chính quy trên các tệp và chuỗi rất lớn. Chúng ta hãy xem xét một số ưu điểm và cách sử dụng biểu thức chính quy trong các ứng dụng của chúng ta

Ưu điểm và cách sử dụng biểu thức chính quy
Trong nhiều tình huống, các nhà phát triển gặp phải sự cố bất cứ khi nào dữ liệu được thu thập trong các trường văn bản tự do vì hầu hết các chương trình xử lý các mục nhập dữ liệu. Biểu thức chính quy được sử dụng hầu hết mọi nơi trong lập trình ứng dụng ngày nay

  • Các biểu thức chính quy giúp xác thực các chuỗi văn bản mà lập trình viên quan tâm
  • Nó cung cấp một công cụ mạnh mẽ để phân tích, tìm kiếm một mẫu và sửa đổi dữ liệu văn bản
  • Nó giúp tìm kiếm mẫu chuỗi cụ thể và trích xuất kết quả phù hợp một cách linh hoạt
  • Nó giúp phân tích các tệp văn bản tìm kiếm một chuỗi ký tự xác định để phân tích thêm hoặc thao tác dữ liệu
  • Với sự trợ giúp của các chức năng biểu thức chính quy được xây dựng, các giải pháp dễ dàng và đơn giản được cung cấp để xác định các mẫu
  • Nó tiết kiệm rất nhiều thời gian phát triển một cách hiệu quả, đó là tìm kiếm mẫu chuỗi cụ thể
  • Nó giúp xác thực thông tin quan trọng của người dùng như địa chỉ email, số điện thoại và địa chỉ IP
  • Nó giúp làm nổi bật các từ khóa đặc biệt trong một tệp dựa trên kết quả tìm kiếm hoặc đầu vào
  • Nó giúp xác định các thẻ mẫu cụ thể và thay thế những dữ liệu đó bằng dữ liệu thực tế theo yêu cầu
  • Regex rất hữu ích để tạo các thẻ nhận dạng hệ thống mẫu HTML
  • Regex chủ yếu được sử dụng để phát hiện trình duyệt, lọc thư rác, kiểm tra độ mạnh của mật khẩu và xác thực biểu mẫu

Chúng tôi không thể đề cập đến mọi thứ trong chủ đề này, nhưng chúng ta hãy xem xét một số khái niệm biểu thức chính quy chính. Bảng sau đây hiển thị một số biểu thức chính quy và chuỗi tương ứng khớp với mẫu biểu thức chính quy

Cụm từ thông dụngMatchesgeeksChuỗi “geeks”^geeksChuỗi bắt đầu bằng “geeks”geeks$Chuỗi có “geeks” ở cuối. ^geeks$Chuỗi trong đó “geeks” đứng một mình trên một chuỗi. [abc]a, b, or c[a-z]Bất kỳ chữ thường nào[^A-Z]Bất kỳ chữ nào KHÔNG phải là chữ in hoa[gif. png]Hoặc “gif” hoặc “png”[a-z]+Một hoặc nhiều chữ cái viết thường^[a-zA-Z0-9]{1, }$Bất kỳ từ nào có ít nhất một số hoặc một chữ cái[[ax]][ . [0-9]{5}]Khớp ba chữ cái hoặc năm số

Ghi chú. Có thể tạo các mẫu tìm kiếm phức tạp bằng cách áp dụng một số quy tắc biểu thức chính quy cơ bản. Thậm chí nhiều toán tử số học như +, ^, – được sử dụng bởi các biểu thức chính quy để tạo các mẫu phức tạp nhỏ

Toán tử trong biểu thức chính quy. Chúng ta hãy xem xét một số toán tử trong biểu thức chính quy PHP

OperatorDescription^Nó biểu thị sự bắt đầu của chuỗi. $Nó biểu thị phần cuối của chuỗi. Nó biểu thị hầu hết mọi ký tự đơn lẻ. [] Nó biểu thị một nhóm các biểu thức. []Nó tìm thấy một loạt các ký tự ví dụ [xyz] có nghĩa là x, y hoặc z. [^]Nó tìm các mục không nằm trong phạm vi, ví dụ [^abc] có nghĩa là KHÔNG a, b hoặc c. – [dấu gạch ngang] Nó tìm phạm vi ký tự trong phạm vi mục đã cho, ví dụ [a-z] có nghĩa là từ a đến z. [pipe]Đó là logic OR ví dụ x. y nghĩa là x HOẶC y. ?Nó biểu thị số không hoặc một trong các ký tự hoặc phạm vi mục trước đó. * Nó biểu thị không hoặc nhiều ký tự hoặc phạm vi mục trước đó. +Nó biểu thị một hoặc nhiều ký tự hoặc phạm vi mục trước đó. {n}Nó biểu thị chính xác n lần phạm vi mục hoặc ký tự trước đó, ví dụ n{2}. {n, }Nó biểu thị ít nhất n lần phạm vi ký tự hoặc mục trước đó, ví dụ n{2, }. {n, m}Nó biểu thị ít nhất n nhưng không quá m lần, ví dụ n{2, 4} có nghĩa là 2 đến 4 của n. \Nó biểu thị ký tự thoát

Các lớp ký tự đặc biệt trong biểu thức chính quy. Chúng ta hãy xem xét một số ký tự đặc biệt được sử dụng trong biểu thức chính quy

Ký tự đặc biệtÝ nghĩa\nNó biểu thị một dòng mới. \rNó biểu thị một sự trở lại vận chuyển. \tNó biểu thị một tab. \vNó biểu thị một tab dọc. \fNó biểu thị một nguồn cấp dữ liệu biểu mẫu. \xxxNó biểu thị ký tự bát phân xxx. \xhhNó biểu thị ký tự hex hh

Bộ ký tự tốc ký. Chúng ta hãy xem xét một số bộ ký tự tốc ký có sẵn

ShorthandMeaning\sKhớp các ký tự khoảng trắng như dấu cách, dòng mới hoặc tab. \dKhớp với bất kỳ chữ số nào từ 0 đến 9. \wKhớp các ký tự từ bao gồm tất cả chữ thường và chữ hoa, chữ số và dấu gạch dưới

Các chức năng được xác định trước hoặc thư viện Regex. Chúng ta hãy xem bảng tóm tắt nhanh về các hàm được xác định trước cho các biểu thức chính quy trong PHP. PHP cung cấp cho người lập trình nhiều hàm hữu ích để làm việc với biểu thức chính quy

Các hàm dựng sẵn được liệt kê bên dưới phân biệt chữ hoa chữ thường

FunctionDefinitionpreg_match[] Hàm này tìm kiếm một mẫu cụ thể đối với một số chuỗi. Nó trả về true nếu mẫu tồn tại và sai nếu không. preg_match_all[] Hàm này tìm kiếm tất cả các lần xuất hiện của mẫu chuỗi so với chuỗi. Chức năng này rất hữu ích cho việc tìm kiếm và thay thế. ereg_replace[] Hàm này tìm kiếm mẫu chuỗi cụ thể và thay thế chuỗi gốc bằng chuỗi thay thế, nếu tìm thấy. eregi_replace[] Hàm hoạt động giống như ereg_replace[] miễn là tìm kiếm mẫu không phân biệt chữ hoa chữ thường. preg_replace[] Hàm này hoạt động giống như hàm ereg_replace[] miễn là các biểu thức chính quy có thể được sử dụng trong mẫu và chuỗi thay thế. preg_split[] Hàm này hoạt động giống như hàm split[] của PHP. Nó phân tách chuỗi bằng các biểu thức chính quy làm tham số của nó. preg_grep[]Hàm này tìm kiếm tất cả các phần tử khớp với mẫu biểu thức chính quy và trả về mảng đầu ra. preg_quote[] Hàm này lấy chuỗi và dấu ngoặc kép ở phía trước mỗi ký tự khớp với biểu thức chính quy. ereg[] Hàm này tìm kiếm một chuỗi được chỉ định bởi một mẫu và trả về true nếu tìm thấy, nếu không thì trả về false. eregi[] Hàm này hoạt động giống như hàm ereg[] miễn là tìm kiếm không phân biệt chữ hoa chữ thường

Ghi chú

  • Theo mặc định, biểu thức chính quy phân biệt chữ hoa chữ thường
  • Có sự khác biệt giữa chuỗi bên trong dấu ngoặc đơn và chuỗi bên trong dấu ngoặc kép trong PHP. Cái trước được xử lý theo nghĩa đen, trong khi đối với các chuỗi bên trong dấu ngoặc kép có nghĩa là nội dung của biến được in thay vì chỉ in tên của chúng

ví dụ 1




Chủ Đề