Biểu thức chính quy trong PHP: Preg_match, Preg_split, Preg_replace

Ngày đăng: 12/06/2019   -    Cập nhật: 12/06/2019

1. Biểu thức chính qui (Regular Expression) là gì?

Biểu thức chính quy (Regular Expression) là thuật toán khớp mẫu mạnh mẽ có thể được thực hiện trong một biểu thức. 
 

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. 

Trong lập trình nói chung và lập trình web nói riêng chúng ta thường sử dụng biểu thức chính quy để xác thực địa chỉ email, số điện thoại, địa chỉ IP, v.v.

 

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

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

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

 

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

 

Trong bài này bạn sẽ được học về:


  • Biểu thức chính qui (Regular Expression trong PHP)
  • Preg_match
  • Preg_split
  • Preg_replace
  • Meta characters
  • Giải nghĩa pattern

2. Biểu thức chính quy trong PHP

PHP đã xây dựng các hàm cho phép chúng ta làm việc với Regular function. Bây giờ chúng ta hãy xem các hàm biểu thức chính quy thường được sử dụng trong PHP.

preg_match - hàm này được sử dụng để thực hiện khớp mẫu trên chuỗi. Nó trả về true nếu tìm thấy kết quả khớp và false nếu không tìm thấy kết quả khớp.

preg_split - hàm này được sử dụng để thực hiện khớp mẫu trên chuỗi và sau đó chia kết quả thành một mảng số.

preg_replace - hàm này được sử dụng để thực hiện khớp mẫu trên chuỗi và sau đó thay thế chúng bằng văn bản đã chỉ định.

Dưới đây là cú pháp của hàm biểu thức chính quy (Regular expression function), chẳng hạn như preg_match, preg_split hoặc preg numplace.
            
        

Giải thích cú pháp của hàm biểu thức chính quy:

  • "function_name(...)" giống như là preg_match, preg_split hay là preg_replace
  • "/.../" Biểu thị bắt đầu và kết thúc cảu chính quy
  • "/patternt/" là pattern cần khớp
  • "subject" là chuỗi văn bản được khớp

Cụ thể hơn, chúng ta hãy xem xét các ví dụ thực tế triển khai các hàm biểu thức chính quy ở trên trong PHP.

3. Một số ví dụ về hàm biểu thức chính quy trong PHP

3.1. Hàm biểu thức chính quy preg_match 


Ví dụ đầu tiên sử dụng hàm preg_match để thực hiện khớp mẫu đơn giản cho từ niit trong một URL đã cho sẵn. 

Đoạn code dưới đây cho thấy việc thực hiện cho ví dụ trên:
            
        

Kết quả của chương trình;
            
        

Ở đây:

  • "preg_match(...)" là tên của hàm biểu thức chính quy
  • "/niit/" là pattern cần khớp
  • "$my_url" là biến chứa văn bản được khớp

3.2. Hàm biểu thức chính quy preg_split


Bây giờ hãy nhìn vào một ví dụ khác mà chúng ta sử dụng hàm preg_split

Ví dụ, chúng ta muốn tách các từ trong chuỗi "Tôi yêu Regular Expression" và nhét nó vào một mảng.

Đoạn code bên dưới đây sẽ thực hiện ví dụ này:
            
        

Kết quả chúng ta nhận được là:
            
        

Lưu ý: Pattern chúng ta cần truyền vào là / / chứ không phải // để có thể tách được các từ. Nếu sử dụng // thì hàm biểu thức chính quy preg_split sẽ tách từng ký tự.

3.3. Hàm biểu thức chính quy preg-replace


Bây giờ, hãy nhìn vào hàm preg_replace thực hiện khớp mẫu và sau đó thay thế mẫu bằng một thứ khác. 

Đoạn code dưới đây tìm kiếm từ niit trong một chuỗi cho trước:

Nó thay thế từ niit bằng từ niit bằng NIIT - ICT Hà Nội.

            
        

Kết quả chúng ta nhận được là:
            
        

Note: Bạn cũng có thể thay thế cả html, css
            
        

Thử chạy chương trình xem kết quả bạn nhận được là gì?

4. Biểu thức chính quy với pattern tùy chỉnh phức tạp hơn, linh hoạt hơn nhờ Metacharacters

Các ví dụ trên đã sử dụng các pattern rất cơ bản. Trong lập trình web thì thông thường sử dụng đến biểu thức chính quy đều là trường hợp cần kiểm tra, xác thực hay khớp mẫu phức tạp.

Chính vì thế bảng dưới đây sẽ giúp bạn biết cách tạo pattern phức tạp, linh hoạt hơn khi sử dụng biểu thức chính quy.


Metacharacter Mô tả Ví dụ
.  Khớp với bất kỳ ký tự đơn nào trừ dòng mới  /./ sẽ khớp với bất cứ thứ gì có 1 ký tự duy nhất
^  Khớp với phần đầu hoặc chuỗi bắt đầu với ký tự nào đó  /^PH/ sẽ khớp với bất kỳ chuỗi nào bắt đâu bằng PH
$  Khớp vào pattern ở cuỗi chuỗi  /com$/ khớp với chuỗi kết thúc là com (google.com)
*  Khớp với bất kỳ ký tự nào  /com*/ sẽ khớp với computer, communication, compare ...
+  Yêu cầu các ký tự đứng trước xuất hiện ít nhất 1 lần  /goo+gle/ sẽ khớp với google
\  Sử dụng để ký tự sau nó là nguyên thủy  /google+\.com/ sẽ coi dấu dấu là dấu chấm theo nghĩa đen
[...]  Lớp ký tự  /[abc]/ sẽ khớp với abc
a-z  Khớp với các ký tự thường từ a-z  /a-z/ sẽ khớp với các ký tự thường từ a-z
A-Z  Khớp với các ký tự Hoa từ A-Z  /A-Z/
0-9  Khớp bất kỳ số nào trong khoảng từ 0 đến 9  /0-9/

Danh sách trên này chỉ đưa ra cách tạo pattern với kiểu ký tự phổ biến.

Bây giờ chúng ta thử đến với cách sử dụng pattern để kiểm tra email đơn giản.
            
        

Giải thích ý nghĩa pattern: "[/^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$/]"


  • "/.../" đây là bắt đầu và kết thúc biểu thức chính quy
  • "^[a-zA-Z0-9._-]"  khớp với bất kỳ chữ in thường hoặc in hoa, 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 biểu tượng @ theo sau là chữ thường hoặc chữ in hoa (a - z và A-Z), các số từ 0 đến 9 hoặc dấu gạch ngang.
  • "+\.[a-zA-Z.]{2,5}$/" tiếp đến là dấu chấm và khớp với bất kỳ chuỗi nào là chữ thường hoặc chữ in hoa (a - z và A-Z), các số từ 0 đến 9 với độ dài từ 2 đến 5 ký tự. Kết thúc chuỗi bằng cách thêm ký tự $ vào sau cùng.

Kết quả chúng ta nhận được là:

            
        

Bạn cũng có thể tìm hiểu kỹ hơn về Biểu thức chính quy trong PHP tại đây

Tổng kết

Biểu thức chính quy (Reguar Expression) là thuật toán khớp mẫu mạnh mẽ

Biểu thức chính quy thực sự hữu ích khi thực hiện việc kiểm tra, xác nhận dữ liệu

Các hàm được dựng sẵn trong PHP như preg_match, preg_splitpreg_replace hỗ trợ biểu thức chính quy

Metacharacters cho phép chúng ta tạo ra các pattern phức tạp theo yêu cầu bài toán cụ thể.

>>> Tìm hiểu kỹ hơn về Regular Expression tại khóa học lập trình PHP ở NIIT - ICT Hà Nội. Nhanh tay nhận chính sách học bổng cực kỳ hấp dẫn.
Bình luận Facebook
Đăng ký tư vấn
Nhân viên gọi điện tư vấn miễn phí sau khi đăng ký
Được cập nhật các ưu đãi sớm nhất
Hotline: 0383180086
Tên không được để trống
Số điện thoại không được để trống
Email không được để trống
Hãy đăng ký để nhận những thông tin mới nhất về học bổng mới nhất tại NIIT - ICT Hà Nội
top
Đóng lại Đăng ký học tại NIIT - ICT Hà Nội
6260+ học viên đã theo học tại NIIT - ICT Hà Nội và có việc làm tốt trong ngành lập trình. Nắm lấy cơ hội ngay hôm nay!
Chọn khóa học
  • KHÓA HỌC LẬP TRÌNH FRONT END VỚI REACT.JS
  • KHÓA HỌC LẬP TRÌNH PHP WEB
  • Khóa học PHP Full stack [2023] cho người mới bắt đầu
  • Khóa học BIG DATA với Hadoop và Spark
  • Khóa học Lập trình Android tại Hà Nội
  • [Tuyển sinh 2023] Lập trình viên Quốc tế DigiNxt
  • Khóa học Tiền lương & Phúc lợi (C&B Excel) tại Hà Nội
  • LẬP TRÌNH GAME
    • Khóa học Lập trình Game Unity
  • LẬP TRÌNH WEB FRONT END
    • KHÓA HỌC PYTHON HƯỚNG ĐỐI TƯỢNG
    • KHÓA HỌC ANGULAR & TYPESCRIPT (FRONT END)
  • LẬP TRÌNH WEB BACK END
    • LẬP TRÌNH JAVA WEB VỚI FRAME WORK
    • Lập trình Web với Django
    • Lập trình PHP với Laravel Framework
  • CHƯƠNG TRÌNH ĐÀO TẠO ỨNG DỤNG CÔNG NGHỆ
    • Khóa học Tiền lương & Phúc lợi (C&B Excel) tại TP HCM
  • LẬP TRÌNH WEB FULL STACK
    • Khóa học Java Full stack (IJFD)
  • LẬP TRÌNH MOBILE
    • FRONT-END VỚI REACTJS VÀ REACT NATIVE
    • Lập trình Android Nâng cao
  • ĐÀO TẠO CHO DOANH NGHIỆP
    • KHÓA HỌC BUSINESS ANALYSIC TỪ CƠ BẢN ĐẾN NÂNG CAO 2023
    • Khóa học Magento: Làm chủ CMS TMĐT lớn nhất
    • Khóa học IOT: Xây dựng Sản phẩm IOT với Raspberry Pi
    • Khóa học Automation Testing Chuyên nghiệp
  • KHÓA HỌC DỰ ÁN
    • Học sử dụng bộ Office: Word, Excel, Power Point, Mail chuyên nghiệp
  • KHÓA HỌC KHÁC
    • VBA Excel Toàn Tập (Cơ Bản - Nâng Cao)
    • VBA Excel Nâng cao
    • Khóa học JMeter: Performance Testing
    • Khóa học Tester đạt chuẩn Quốc tế ISTQB Foundation Level
    • Khoá Học Tester đạt chuẩn quốc tế ISTQB Advanced Level
Bạn chưa chọn khóa học cần đăng ký
Tên không được để trống
Số điện thoại không được để trống
Email không được để trống
Đăng ký học thành công!
Cảm ơn bạn đã đăng ký học tại NIIT - ICT HÀ NỘI!