Bài 3: Hàm preg_match trong PHP

Ở bài trước mình đã có giới thiệu với các bạn qua về hàm preg_match rồi, nhưng ở bài đó mình mới chỉ dừng lại ở mức độ sơ qua để các bạn có thể hiểu được các ví dụ mà mình demo về các chuỗi regex. Bài này mình sẽ trình bày với các bạn chi tiết hơn về hàm preg_match trong PHP.

1, Hàm Preg_match().

-Hàm preg_match() trong PHP có tác dụng thực hiện các đối sách để xác minh một chuỗi Regular Expression với một chuỗi cần so sánh.

Cú pháp:

preg_match($pattern, $subject, $match, $flags, $offset);

 

Trong đó:

  • $pattern là chuỗi Regular Expression.
  • $subject là chuỗi cần so khớp.
  • $match là kết trả về, được truyền vào dưới dạng tham chiếu (có thể bỏ trống).
  • $flags là tham số  chỉ ra vị trí cắt chuỗi so khớp, mặc định $flag = 0 (có thể bỏ trống).
  • $offset là tham số chỉ ra vị trí bắt đầu của việc so khớp chuỗi, mặc định $offset = 0 (có thể bỏ trống).

2, Các ví dụ.

Hai tham số truyền vào.

VD: Kiểm tra xem chuỗi có phải là số không.

<?php 
$pattern = '/[a-z]/';
$string = 'Học lập trình web online tại toidicode.com'; 
if (preg_match($pattern, $string)) {
    echo 'chuỗi chứa toàn chữ';
} else {
    echo 'chuỗi không chứa hết chữ';
}

 

Ba tham số truyền vào.

VD: Lấy tất cả các ký tự sau @ và trước dấu ,

<?php 
$pattern = '/[a-z]/';
$string = 'Học lập trình web online tại toidicode.com'; 
if (preg_match($pattern, $string)) {
    echo 'chuỗi chứa toàn chữ';
} else {
    echo 'chuỗi không chứa hết chữ';
}

 

Kết quả:

Array
(
    [0] => @gmail.com,
    [1] => gmail.com
)

 

-Như vậy chúng ta chỉ cần lấy $matches[1] là thỏa mãn yêu cầu đề ra rồi.

Bốn tham số truyền vào.

VD: Cũng với ví dụ trên nhưng lần này mình sẽ trả về vị trí so khớp chuỗi cùng với kết quả sau khi so khớp bằng cách truyền thêm tham số thứ 4 vào.

<?php 
$pattern = '/@(.+),/';
$string = '[email protected],';
preg_match($pattern, $string, $matches, PREG_OFFSET_CAPTURE);
echo '<pre>';
print_r($matches);
echo '</pre>';

 

Kết quả:

Array
(
    [0] => Array
        (
            [0] => @gmail.com,
            [1] => 11
        )

    [1] => Array
        (
            [0] => gmail.com
            [1] => 12
        )

)

 

-Ở đây các con số 11, 12 chính là vị trí bắt đầu cắt chuỗi so khớp của từng trường hợp.

Năm tham số truyền vào.

VD: Regex chuỗi bắt đầu từ vị trí thứ 11 của chuỗi.

<?php 
$pattern = '/@(.+),/';
$string = '[email protected],';
preg_match($pattern, $string, $matches, PREG_OFFSET_CAPTURE,11);
echo '<pre>';
print_r($matches);
echo '</pre>';

 

Kết quả:

Array
(
    [0] => Array
        (
            [0] => @gmail.com,
            [1] => 11
        )

    [1] => Array
        (
            [0] => gmail.com
            [1] => 12
        )

)

 

3, Lời kết.

-Như vậy bài này mình đã đưa ra được đầy đủ các ví dụ với từng trường hợp của hàm preg_match trong PHP rồi. Bài sau mình sẽ giới thiệu với mọi người về hàm preg_quote() trong PHP.

Nguồn: toidicode.com