PHP Biểu thức chính quy / Regex: preg_match () - preg_replace ()

Mục lục:

Anonim

Biểu thức chính quy trong PHP là gì?

PHP Regular Expression còn được gọi là regex là thuật toán so khớp mẫu mạnh mẽ có thể được thực hiện trong một biểu thức duy nhất. Biểu thức chính quy sử dụng các toán tử số học như (+, -, ^) để tạo các biểu thức phức tạp. Họ có thể giúp bạn hoàn thành các nhiệm vụ như xác thực địa chỉ email, địa chỉ IP, v.v.

Tại sao sử dụng biểu thức chính quy

  • PHP Biểu thức chính quy đơn giản hóa việc xác định các mẫu trong dữ liệu chuỗi bằng cách gọi một hàm duy nhất. Điều này giúp chúng tôi tiết kiệm thời gian viết mã.
  • Khi xác thực thông tin đầu vào của người dùng như địa chỉ email, tên miền, số điện thoại, địa chỉ IP,
  • Đánh dấu từ khóa trong kết quả tìm kiếm
  • Khi tạo một mẫu HTML tùy chỉnh. Regex trong PHP có thể được sử dụng để xác định các thẻ mẫu và thay thế chúng bằng dữ liệu thực tế.

Trong hướng dẫn PHP Regex này, bạn sẽ học:

  • Các hàm biểu thức chính quy tích hợp trong PHP
  • PHP Preg_match ()
  • PHP Preg_split ()
  • PHP Preg_replace ()
  • Siêu ký tự biểu thức chính quy
  • Giải thích mô hình

Các hàm biểu thức chính quy tích hợp trong PHP

PHP đã tích hợp sẵn các hàm cho phép chúng ta làm việc với các hàm thông thường mà chúng ta sẽ học trong hướng dẫn PHP Regular Expressions này. Hãy xem xét các hàm biểu thức chính quy thường được sử dụng trong PHP.

  • Preg_match () trong PHP - hàm này được sử dụng để thực hiện đối sánh mẫu trong PHP trên một chuỗi. Nó trả về true nếu tìm thấy kết quả phù hợp và false nếu không tìm thấy kết quả phù hợp.
  • Preg_split () trong PHP - hàm này được sử dụng để thực hiện đối sánh mẫu trên một chuỗi và sau đó chia kết quả thành một mảng số
  • Preg_replace () trong PHP - hàm này được sử dụng để thực hiện đối sánh mẫu trên một chuỗi và sau đó thay thế đối sánh bằng văn bản được chỉ định.

Dưới đây là cú pháp cho một hàm biểu thức chính quy như PHP preg_match (), PHP preg_split () hoặc PHP preg_replace ().

ĐÂY,

  • "function_name (…)" là PHP preg_match (), PHP preg_split () hoặc PHP preg_replace ().
  • "/… /" Các dấu gạch chéo về phía trước biểu thị phần đầu và phần cuối của hàm trình kiểm tra regex PHP của chúng tôi
  • "'/ pattern /'" là mẫu mà chúng ta cần đối sánh
  • "chủ đề" là chuỗi văn bản được so khớp với

Bây giờ chúng ta hãy xem xét các ví dụ thực tế thực hiện các hàm regex PHP ở trên.

PHP Preg_match ()

Ví dụ đầu tiên sử dụng hàm preg_match () trong PHP để thực hiện đối sánh mẫu đơn giản cho từ guru trong một URL nhất định.

Đoạn mã dưới đây hiển thị việc triển khai hàm thử nghiệm preg_match () cho ví dụ trên.

Duyệt đến URL http: //localhost/phptuts/preg_match_simple.php

Hãy kiểm tra phần mã chịu trách nhiệm cho đầu ra của chúng ta "preg_match ('/ guru /', $ my_url)" TẠI ĐÂY,

  • "preg_match (…)" là hàm regex của PHP
  • "'/ guru /'" là mẫu biểu thức chính quy được đối sánh
  • "$ my_url" là biến chứa văn bản được so khớp với.

Sơ đồ dưới đây tóm tắt các điểm trên

PHP Preg_split ()

Bây giờ chúng ta hãy xem xét một ví dụ khác sử dụng hàm preg_split () trong PHP.

Chúng tôi sẽ lấy một cụm từ chuỗi và phát nổ nó thành một mảng; mô hình được kết hợp là một không gian duy nhất.

Chuỗi văn bản được sử dụng trong ví dụ này là "I Love Regular Expressions".

Đoạn mã dưới đây minh họa việc triển khai ví dụ trên.

Duyệt đến URL http: //localhost/phptuts/preg_split.php

PHP Preg_replace ()

Bây giờ chúng ta hãy xem xét hàm preg_replace () trong PHP thực hiện đối sánh mẫu và sau đó thay thế mẫu bằng một thứ khác.

Đoạn mã dưới đây tìm kiếm từ guru trong một chuỗi.

Nó thay thế từ guru bằng từ guru được bao quanh bởi mã css làm nổi bật màu nền.

Giả sử bạn đã lưu tệp preg_replace.php, trình duyệt vào URL http: //localhost/phptuts/preg_replace.php

Siêu ký tự biểu thức chính quy

Các ví dụ trên đã sử dụng các mẫu rất cơ bản; siêu ký tự chỉ cho phép chúng tôi thực hiện các đối sánh mẫu phức tạp hơn, chẳng hạn như kiểm tra tính hợp lệ của địa chỉ email. Bây giờ chúng ta hãy xem xét các siêu ký tự thường được sử dụng.

Metacharacter Sự miêu tả Thí dụ
. Khớp với bất kỳ ký tự đơn nào ngoại trừ một dòng mới /./ khớp với bất kỳ thứ gì có một ký tự duy nhất
^ Đối sánh phần đầu của hoặc chuỗi / loại trừ các ký tự / PH / khớp với bất kỳ chuỗi nào bắt đầu bằng PH
$ Khớp mẫu ở cuối chuỗi / com $ / trận đấu với guru99.com, yahoo.com, v.v.
* Đối sánh bất kỳ ký tự không (0) nào trở lên / com * / phù hợp với máy tính, giao tiếp, v.v.
+ Yêu cầu (các) ký tự đứng trước xuất hiện ít nhất một lần / yah + oo / khớp với yahoo
\ Được sử dụng để thoát khỏi các ký tự meta /yahoo+\.com/ coi dấu chấm như một giá trị chữ
[…] Lớp nhân vật / [abc] / khớp với abc
az Khớp các chữ cái viết thường / az / phù hợp với mát mẻ, vui vẻ, v.v.
AZ Khớp các chữ cái viết hoa / AZ / phù hợp với CÁI GÌ, CÁCH NÀO, TẠI SAO, v.v.
0-9 Khớp với bất kỳ số nào từ 0 đến 9 / 0-4 / trận 0,1,2,3,4

Danh sách trên chỉ cung cấp các siêu ký tự được sử dụng phổ biến nhất trong biểu thức chính quy.

Bây giờ chúng ta hãy xem xét một ví dụ khá phức tạp để kiểm tra tính hợp lệ của một địa chỉ email.

Giải thích mẫu "[/^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$/] "

ĐÂY,

  • "'/… /'" Bắt đầu và kết thúc biểu thức chính quy
  • "[a-zA-Z0-9 ._-]" khớp với mọi chữ cái viết thường hoặc viết hoa, các số từ 0 đến 9 và dấu chấm, dấu gạch dưới hoặc dấu gạch ngang.
  • "+ @ [a-zA-Z0-9-]" khớp với ký hiệu @ theo sau là chữ thường hoặc chữ hoa, các số từ 0 đến 9 hoặc dấu gạch ngang.
  • "+ \. [a-zA-Z.] {2,5} $ /" thoát khỏi dấu chấm bằng cách sử dụng dấu gạch chéo ngược, sau đó khớp với bất kỳ chữ cái thường hoặc chữ hoa nào có độ dài ký tự từ 2 đến 5 ở cuối chuỗi.

Duyệt đến URL http: //localhost/phptuts/preg_match.php

Như bạn có thể thấy từ phân tích ví dụ trên, siêu ký tự rất mạnh khi nói đến các mẫu phù hợp.

Tóm lược

  • Biểu thức chính quy hoặc Regex trong PHP là một thuật toán so khớp mẫu
  • Biểu thức chính quy rất hữu ích khi thực hiện kiểm tra xác thực, tạo hệ thống mẫu HTML nhận dạng thẻ, v.v.
  • PHP đã tích hợp sẵn các hàm như PHP preg_match (), PHP preg_split () và PHP preg_replace () hỗ trợ các biểu thức chính quy.
  • Metacharacters cho phép chúng tôi tạo ra các mẫu phức tạp