Hướng dẫn dùng epressions trong PHP

Danh sách các bài viết trong chuyên mục Regular Expression PHP, đây là những bài viết mới nhất được cập nhật trong mục Regular Expression PHP.

Trước đây việc xử lý chuỗi trong PHP rất là khó khăn bởi nó cung cấp quá ít hàm xử lý chuỗi, hoặc nếu có thì các hàm đó lại không có một chuẩn chung để kiểm tra định dạng của chuỗi. Nhưng từ ngày Regular Expression ra đời thì vấn đề này đã được giải quyết. 

Regular Expression là một chương trình mẫu (biểu thức chính quy) dùng để so khớp với dữ liệu. Ngoài cách ghi này ra thì người ta cò ghi tắt là ReExp, vì vậy kể từ bây giờ nếu mình có ghi RegExp thì ban phải hiểu đó là Regular Expression nhé.

Hiện trong PHP có một số hàm dùng để xử lý RegExp như preg_match, preg_match_all, ... Công dụng nhiều nhất của Regular Expression PHP đó là dùng để tách chuỗi khi lấy nội dung từ website khác, hoặc nó dùng để kiểm tra định dạng dữ liệu truyền vào có hợp lệ hay không. Đây là hai vấn đề thường gặp khi bạn làm website, vì vậy bạn không nên bỏ qua series học RegExp​ này bởi vì series này mình viết khá đầy đủ và dư cho bạn sử dụng khi xây dựng dự án. Tuy nhiên nếu bạn chỉ muốn sử dụng đơn giản thì có thể đọc vài bài đầu về các cú pháp đơn giản của Regex và các hàm xử lý Regular Expression trong PHP là được.

Regular Expression được tích hợp vào hầu hết các ngôn ngữ lập trình hiện nay, mỗi ngôn ngữ sẽ có những hàm xử lý khác nhau nhưng về chuẩn biểu thức chính quy thì thì giống nhau, vì vậy nếu bạn đã từng sử dụng biểu thức Regex ở ngôn ngữ khác thì khi qua PHP sẽ không gây khó khăn cho bạn.

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

Regex là các mẫu (pattern) thay vì các chuỗi cụ thể được sử dụng tìm/thay thế (Find/Replace). Là một công cụ cực mạnh cho xử lý chuỗi trong Php, javascript… Ví dụ: Khi kiểm tra tính hợp lệ của email hoặc số điện thoại thì điều bạn nghĩ tới đầu tiên chính là Regex. Regex là viết tắt của Regular Expression, tên thuần Việt là biểu thức chính quy.

Ký tự cơ bản của Biểu thức chính quy

Nói chung là Regex còn nhiều ứng dụng hữu ích khác, tóm gọn lại một chút là hiểu đơn giản thì Regex là một chuỗi các kí tự miêu tả một bộ các chuỗi kí tự khác, theo những quy tắc và cú pháp nhất định.

Hướng dẫn dùng epressions trong PHP

Hàm Preg_match trong php

Nguyên tắc hoạt động của biểu thức Regex là so khớp dựa vào mẫu (pattern), mẫu được xây dựng từ các quy tắc căn bản của biểu thức RegEx. Và để các bạn nắm rõ regular expression là gì thì có một hàm xử lý Regular Expression trong php đó là hàm preg_match, sau đó đưa ra một vài ví dụ nhỏ để các bạn thực hành trước khi tìm hiểu các phần nâng cao hơn.

Cú pháp là: preg_match($pattern, $subject, $matches)

  • $pattern là chuỗi Regex Pattern
  • $subject là chuỗi nguồn để chúng ta so khớp với $pattern
  • $matches là danh sách kết quả trả về đúng khi so khớp 2 chuỗi trên

VD1: kiểm tra một chuỗi là số

if (preg_match('/^[0-9]+$/', '123', $matches)){

    var_dump($matches);

}

kết quả:

array

  0 => string '123' (length=3)

VD2: kiểm tra một chuỗi các ký tự thường

if (preg_match('/^[a-z]+$/', 'trianh', $matches)){

    var_dump($matches);

}

Kết quả: 

array

  0 => string 'trianh' (length=6)

VD3: Kiểm tra một chuỗi là các ký tự hoa

if (preg_match('/^[A-Z]+$/', 'TRIANH', $matches)){

    var_dump($matches);

}

Kết quả:

array

  0 => string 'TRIANH' (length=6)

Tạo 1 Regular Expressions trong JS

Trong Javascript thì Regular Expression là một chuỗi nhưng nó không được bao quanh bởi cặp dấu nháy đơn ' hoặc nháy kép " mà nó được bao quanh bởi cặp dấu /. Có 2 cách tạo:

Cú pháp: new RegExp(pattern[, flags])

VD:

var regexConst = new RegExp('abc');

Hoặc sử dụng dấu /

Cú pháp: /pattern/flags

Trong đó:

  • pattern là chuỗi Regular Expression
  • flags là thông số cấu hình cho chuỗi pattern và nó có các giá trị:
    • i : so khớp không quan tâm đến chữ hoa chữ thường
    • g : so khớp toàn bộ chuỗi cần tìm
    • m : so khớp luôn cả các dữ liệu xuống dòng (multiline)

Ví dụ: Pattern kiểm tra chuỗi có tồn tại chữ “trianh” không, không phân biệt chữ hoa chữ thường và tìm toàn bộ tài liệu.

var pattern = /trianh/igm;

  • pattern là trianh
  • flags là igm

Cách viết Regex chi tiết

Trong Regex có vài cái khá là điển hình và được sử dụng rất nhiều bao gồm so khớp chuỗi, tách chuỗi, tìm kiếm trong chuỗi, thay thế chuỗi…

Biểu thức chính quy(Regular Expression) cơ bản trong PHP

Biểu thức chính quy(Regular Expression) là một chuỗi miêu tả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định(theo wikipedia).


Biểu thức chính quy(Regular Expression) là một chuỗi miêu tả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định(theo wikipedia).

PHP cũng hỗ trợ một hàm để thực hiện biểu thức, đó là preg_match().

Trong bài này tôi chưa đi sâu vào tìm hiểu về regular expression mà chỉ dừng lại ở mức độ giới thiệu qua cho mọi người để các bạn có thể hình dung phần nào về nó.


Các ký tự đặc biệt trong Regular Expression

– Regular Expression chia ra làm 2 loại ký tự:
+ Ký tự thường bao gồm các ký tự trong bảng chữ cái: a,b,c,d,.. và các chuỗi thông thường được ghép từ các ký tự đó.
+ Ký tự đặc biệt: Đơn giản là chúng ta không chỉ muốn tìm kiếm các chuỗi ký tự thông thường, vì thế chúng ta cần phải sử dụng một số ký tự đặc biệt. Các bạn có thể tham khảo tại
http://www.regular-expressions.info/characters.html
Dưới đây là một số ký tự đặc biệt mà chúng ta sẽ sử dụng trong ví dụ sắp tới:
^ : Trả về chuỗi kết quả phù hợp với vị trí đầu của chuỗi gốc.
$ : Trả về chuỗi kết quả phù hợp với vị trí cuối của chuỗi gốc.
: Ký tự Escape.
+ : Lặp lại 1 hay nhiều lần.


Ví dụ

– Bây giờ chúng ta sẽ kiểm tra xem địa chỉ email [email protected] có hợp lệ hay không bằng cách sử dụng regular expression và hàm preg_match() trong PHP.