[Bài đọc] Các hàm thao tác với Regular Expression trong PHP

Tổng quan

PHP xây dựng sẵn các hàm giúp thao tác với Biểu thức chính quy. Sau đây là các hàm thường hay được sử dụng: 

1. Hàm preg_match():

Hàm preg_match() được dùng để kiểm tra, so khớp và lấy kết quả của việc so sánh chuỗi dựa vào biểu thức chính quy. Hàm trả về TRUE/FALSE. 

Cú pháp:

preg_match ( $pattern , $subject, &$matches)

Trong đó: 

  • $pattern là biểu thức Regular Expression
  • $subject là chuỗi cần kiểm tra
  • $matches là kết quả trả về, đây là một tham số tùy chọn, truyền vào ở dạng tham chiếu.

Kết quả: Hàm preg_match() sẽ trả về TRUE nếu so khớp $pattern với $subject và FALSE nếu không khớp.

Ví dụ 1: 


<?php$string = 5;$pattern = '/^[0-9]$/';if (preg_match($pattern, $string)) { echo 'Khớp';} else { echo 'Không khớp';}?>

Kết quả: 

Khớp

Ví dụ 2: 


<?php$subject = "Chào mừng bạn đến với CodeGym. CodeGym - Hệ thống đào tạo lập trình hiện đại.";$pattern = '/CodeGym/';print('<pre>');preg_match($pattern, $subject, $matches);print_r($matches);print('</pre>');?>

Kết quả: 


Array
(
    [0] => CodeGym
)

2. Hàm preg_match_all():

Về cơ chế hoạt động của hàm preg_match_all() cũng tương tự hàm preg_match() ở trên , tuy nhiên hai hàm này khác nhau ở chỗ , hàm preg_match_all() sẽ trả về toàn bộ các giá trị được so sánh khớp, còn hàm preg_match() chỉ trả về giá trị đầu tiên được so sánh khớp.

Ví dụ:


<?php$subject = "Chào mừng bạn đến với CodeGym. CodeGym - Hệ thống đào tạo lập trình hiện đại.";$pattern = '/CodeGym/';print('<pre>');preg_match_all($pattern, $subject, $matches);print_r($matches);print('</pre>');?>

Kết quả khi chạy đoạn chương trình trên: 


Array
(
    [0] => Array
        (
            [0] => CodeGym
            [1] => CodeGym
        )

)

3. Hàm preg_split(): 

Sử dụng hàm pre_split để chia nhỏ chuỗi thành mảng chứa các chuỗi con.

Cú pháp:


preg_split($pattern,$subject)

Hàm này tìm trong $subject các chuỗi con phù hợp với mẫu $pattern là một biểu thức RegExp.

  • $pattern : Biểu thức RegExp để tìm kiếm
  • $subject : Chuỗi nhập vào để tìm kiếm và chia nhỏ

Ví dụ: 


<?php $ip = "192.168.1.1"; $iparr = preg_split ("/\./", $ip);  print "$iparr[0] <br />"; print "$iparr[1] <br />" ; print "$iparr[2] <br />" ; print "$iparr[3] <br />" ;?>

Kết quả: 

19216811

Trong ví dụ trên, cho một chuỗi, biểu diễn địa chỉ IP, sử dụng hàm preg_split chia nhỏ xác định các thành phần của IP đó.

4. Hàm preg_repalce(): 

Hàm preg_replace dùng để tìm kiếm và thay thế một chuỗi nào đó khớp với đoạn Regular Expression truyền vào. 

Cú pháp: 


preg_replace($pattern, $replacement,$subject)

Trong đó: 

Hàm này tìm trong $subject các chuỗi con phù hợp với mẫu $pattern là một biểu thức RegExp, thay thế chuỗi tìm thấy bởi $replacement

  • $pattern : Biểu thức RegExp để tìm kiếm có thể là một chuỗi hoặc một mảng.
  • $subject : Chuỗi nhập vào để tìm kiếm
  • $replacement : Giá trị thay thế, có thể là chuỗi hoặc mảng. Nếu $pattern là mảng $replacement là chuỗi thì mọi kết quả tìm kiểm theo $pattern được thay thể bởi $replacement. Nếu cả $pattern, $replacement là mảng thì nó thay thế theo phần tử tương ứng.

Ví dụ: 


<?php$str = "Vi du ve ham preg_replace 21321 878";

$str = preg_replace("/[0-9]+/", "2000", $str);print $str;?>

Kết quả: 

Vi du ve ham preg_replace 2000 2000

Leave a Reply

Your email address will not be published.