Preg_match_all trong php

$subject = "freetuts.net";
$pattern = '/net/';
preg_match[$pattern, $subject, $matches];
echo '
';
print_r[$matches];
echo '
';
9

$subject = "freetuts.net";
$pattern = '/net/';
preg_match[$pattern, $subject, $matches];
echo '
';
print_r[$matches];
echo '
';
0

$subject = "freetuts.net";
$pattern = '/net/';
preg_match[$pattern, $subject, $matches];
echo '
';
print_r[$matches];
echo '
';
1

$subject = "freetuts.net";
$pattern = '/net/';
preg_match[$pattern, $subject, $matches];
echo '
';
print_r[$matches];
echo '
';
2

$subject = "freetuts.net";
$pattern = '/net/';
preg_match[$pattern, $subject, $matches];
echo '
';
print_r[$matches];
echo '
';
3

Hàm
$subject = "freetuts.net";
$pattern = '/net/';
preg_match[$pattern, $subject, $matches];
echo '
';
print_r[$matches];
echo '
';
0 được dùng để kiểm tra, so khớp và lấy kết quả của chuỗi công việc so sánh dựa trên biểu thức chính quy Biểu thức chính quy, hàm này có ba tham số và có cú pháp như sau
  • $subject = "freetuts.net";
    $pattern = '/net/';
    preg_match[$pattern, $subject, $matches];
    echo '
    ';
    print_r[$matches];
    echo '
    ';
    2

in which

  • $subject = "freetuts.net";
    $pattern = '/net/';
    preg_match[$pattern, $subject, $matches];
    echo '
    ';
    print_r[$matches];
    echo '
    ';
    3 là biểu thức Biểu thức chính quy
  • $subject = "freetuts.net";
    $pattern = '/net/';
    preg_match[$pattern, $subject, $matches];
    echo '
    ';
    print_r[$matches];
    echo '
    ';
    4 is string to check
  • $subject = "freetuts.net";
    $pattern = '/net/';
    preg_match[$pattern, $subject, $matches];
    echo '
    ';
    print_r[$matches];
    echo '
    ';
    5 là kết quả được trả về, đây là một tham số truyền vào ở dạng tham chiếu

Kết quả

Bài viết này đã được đăng tại [free tuts. mạng lưới]

  • Kết quả của hàm
    $subject = "freetuts.net";
    $pattern = '/net/';
    preg_match[$pattern, $subject, $matches];
    echo '
    ';
    print_r[$matches];
    echo '
    ';
    0 sẽ trả về
    $subject = "freetuts.net";
    $pattern = '/net/';
    preg_match[$pattern, $subject, $matches];
    echo '
    ';
    print_r[$matches];
    echo '
    ';
    7 nếu khớp và
    $subject = "freetuts.net";
    $pattern = '/net/';
    preg_match[$pattern, $subject, $matches];
    echo '
    ';
    print_r[$matches];
    echo '
    ';
    8 nếu không khớp

Ví dụ. kiểm tra một chuỗi có phải là một dãy số hay không

________số 8

Nếu bạn thắc mắc tại sao biến

$subject = "freetuts.net";
$pattern = '/net/';
preg_match[$pattern, $subject, $matches];
echo '
';
print_r[$matches];
echo '
';
5 không tồn tại và mình truyền vào nhưng chương trình chạy không bị lỗi, thì mình xin giải thích rằng đó là vì tham số thứ ba
$subject = "freetuts.net";
$pattern = '/net/';
preg_match[$pattern, $subject, $matches];
echo '
';
print_r[$matches];
echo '
';
5 là một tham chiếu nên bạn có thể truyền được như vậy, và

Bây giờ mình sẽ thực hiện một số ví dụ để các bạn hiểu rõ hơn về hàm này nhé

2. Các ví dụ hàm preg_match trong php

Mình xin nhắc lại kết quả của hàm

$subject = "freetuts.net";
$pattern = '/net/';
preg_match[$pattern, $subject, $matches];
echo '
';
print_r[$matches];
echo '
';
0 sẽ trả về
$subject = "freetuts.net";
$pattern = '/net/';
preg_match[$pattern, $subject, $matches];
echo '
';
print_r[$matches];
echo '
';
33. Nếu bạn muốn lấy kết quả thì phải thông qua biến
$subject = "freetuts.net";
$pattern = '/net/';
preg_match[$pattern, $subject, $matches];
echo '
';
print_r[$matches];
echo '
';
5

Ví dụ 1. see try value of

$subject = "freetuts.net";
$pattern = '/net/';
preg_match[$pattern, $subject, $matches];
echo '
';
print_r[$matches];
echo '
';
5

$subject = "freetuts.net";
$pattern = '/net/';
preg_match[$pattern, $subject, $matches];
echo '
';
print_r[$matches];
echo '
';

Kết quả

$subject = "freetuts.net";
$pattern = '/net/';
preg_match[$pattern, $subject, $matches];
echo '
';
print_r[$matches];
echo '
';
3

Vì vậy, kết quả trả về của biến

$subject = "freetuts.net";
$pattern = '/net/';
preg_match[$pattern, $subject, $matches];
echo '
';
print_r[$matches];
echo '
';
5 là một mảng các ký tự phù hợp

Nếu bạn thắc mắc tại sao mảng trả lại ở định dạng

$subject = "freetuts.net";
$pattern = '/net/';
preg_match[$pattern, $subject, $matches];
echo '
';
print_r[$matches];
echo '
';
37, hãy xem các ví dụ dưới đây nhé

Ví dụ 2. Capture Value - gom nhóm 1 cấp

$subject = "freetuts.net";
$pattern = '/net/';
preg_match[$pattern, $subject, $matches];
echo '
';
print_r[$matches];
echo '
';
0

Kết quả

$subject = "freetuts.net";
$pattern = '/net/';
preg_match[$pattern, $subject, $matches];
echo '
';
print_r[$matches];
echo '
';
1

Ví dụ 3. Capture Value - gom nhóm 2 cấp

$subject = "freetuts.net";
$pattern = '/net/';
preg_match[$pattern, $subject, $matches];
echo '
';
print_r[$matches];
echo '
';
2

Kết quả

$subject = "freetuts.net";
$pattern = '/net/';
preg_match[$pattern, $subject, $matches];
echo '
';
print_r[$matches];
echo '
';
3

Nhận xét

Cả 3 ví dụ trên cùng một mục đích là lấy ra chuỗi net , tuy nhiên cách khai báo lại nhau.

  • Ví dụ 1.
    $subject = "freetuts.net";
    $pattern = '/net/';
    preg_match[$pattern, $subject, $matches];
    echo '
    ';
    print_r[$matches];
    echo '
    ';
    38
  • Ví dụ 2.
    $subject = "freetuts.net";
    $pattern = '/net/';
    preg_match[$pattern, $subject, $matches];
    echo '
    ';
    print_r[$matches];
    echo '
    ';
    39
  • Ví dụ 3.
    $subject = "freetuts.net";
    $pattern = '/net/';
    preg_match[$pattern, $subject, $matches];
    echo '
    ';
    print_r[$matches];
    echo '
    ';
    00

And results also other nhau

  • Ví dụ 1. string
    $subject = "freetuts.net";
    $pattern = '/net/';
    preg_match[$pattern, $subject, $matches];
    echo '
    ';
    print_r[$matches];
    echo '
    ';
    38 => index number 0 in
    $subject = "freetuts.net";
    $pattern = '/net/';
    preg_match[$pattern, $subject, $matches];
    echo '
    ';
    print_r[$matches];
    echo '
    ';
    5 is results of the whole string pattern
    $subject = "freetuts.net";
    $pattern = '/net/';
    preg_match[$pattern, $subject, $matches];
    echo '
    ';
    print_r[$matches];
    echo '
    ';
    03
  • Ví dụ 2. Chuỗi
    $subject = "freetuts.net";
    $pattern = '/net/';
    preg_match[$pattern, $subject, $matches];
    echo '
    ';
    print_r[$matches];
    echo '
    ';
    39 => chỉ số 0 trong
    $subject = "freetuts.net";
    $pattern = '/net/';
    preg_match[$pattern, $subject, $matches];
    echo '
    ';
    print_r[$matches];
    echo '
    ';
    5 là kết quả của toàn chuỗi mẫu
    $subject = "freetuts.net";
    $pattern = '/net/';
    preg_match[$pattern, $subject, $matches];
    echo '
    ';
    print_r[$matches];
    echo '
    ';
    06, chỉ số 1 trong
    $subject = "freetuts.net";
    $pattern = '/net/';
    preg_match[$pattern, $subject, $matches];
    echo '
    ';
    print_r[$matches];
    echo '
    ';
    5 là kết quả của biểu thức trong cặp đóng mở [
    $subject = "freetuts.net";
    $pattern = '/net/';
    preg_match[$pattern, $subject, $matches];
    echo '
    ';
    print_r[$matches];
    echo '
    ';
    08]
  • Ví dụ 3. Chuỗi
    $subject = "freetuts.net";
    $pattern = '/net/';
    preg_match[$pattern, $subject, $matches];
    echo '
    ';
    print_r[$matches];
    echo '
    ';
    00 => chỉ số 0 trong
    $subject = "freetuts.net";
    $pattern = '/net/';
    preg_match[$pattern, $subject, $matches];
    echo '
    ';
    print_r[$matches];
    echo '
    ';
    5 là kết quả của toàn chuỗi mẫu
    $subject = "freetuts.net";
    $pattern = '/net/';
    preg_match[$pattern, $subject, $matches];
    echo '
    ';
    print_r[$matches];
    echo '
    ';
    11, chỉ số 1 trong
    $subject = "freetuts.net";
    $pattern = '/net/';
    preg_match[$pattern, $subject, $matches];
    echo '
    ';
    print_r[$matches];
    echo '
    ';
    5 là kết quả biểu thức trong cặp đầu tiên [
    $subject = "freetuts.net";
    $pattern = '/net/';
    preg_match[$pattern, $subject, $matches];
    echo '
    ';
    print_r[$matches];
    echo '
    ';
    13], chỉ số 2 trong
    $subject = "freetuts.net";
    $pattern = '/net/';
    preg_match[$pattern, $subject, $matches];
    echo '
    ';
    print_r[$matches];
    echo '
    ';
    5 là kết quả biểu thức trong cặp trích cuối

Nếu bạn chưa hiểu khái niệm về Capture Value thì quay lại các bài trước khi đọc nhé

  • Quy tắc Biểu thức chính quy căn bản [p1]
  • Quy tắc Biểu thức chính quy căn bản [p2]

Kết luận

Dựa vào nhận xét trên ta có kết luận như sau

  • Kết quả của biến
    $subject = "freetuts.net";
    $pattern = '/net/';
    preg_match[$pattern, $subject, $matches];
    echo '
    ';
    print_r[$matches];
    echo '
    ';
    5 là một mảng các Giá trị nắm bắt được so khớp, nhưng bao nhiêu phần tử thì phụ thuộc vào biểu thức chính quy
  • Biểu thức sẽ duyệt từ trái sang phải và toàn bộ Regex sẽ là nhóm thứ nhất [tức là phần tử 0], duyệt tiếp và mỗi lần gặp cặp biểu thức Regex [ . được gom nhóm bởi
    $subject = "freetuts.net";
    $pattern = '/net/';
    preg_match[$pattern, $subject, $matches];
    echo '
    ';
    print_r[$matches];
    echo '
    ';
    17] thì sẽ coi như là phần tử tiếp theo.

3. Một ví dụ khác function preg_match

Ví dụ 1. Chúng ta sẽ làm một ví dụ lấy tên miền của https. //freetuts. net is in a string for before

$subject = "freetuts.net";
$pattern = '/net/';
preg_match[$pattern, $subject, $matches];
echo '
';
print_r[$matches];
echo '
';
4

Kết quả sẽ trả về 4 phần tử tại vì trong mẫu có 3 đoạn gom nhóm Regex, kết hợp với toàn bộ regex nữa nên kết quả sẽ là 4 phần tử

$subject = "freetuts.net";
$pattern = '/net/';
preg_match[$pattern, $subject, $matches];
echo '
';
print_r[$matches];
echo '
';
5

Ví dụ 2. Bonus cho các bạn thêm một ví dụ nữa đó là lấy chuỗi nằm trong cặp trích lược

$subject = "freetuts.net";
$pattern = '/net/';
preg_match[$pattern, $subject, $matches];
echo '
';
print_r[$matches];
echo '
';
18

$subject = "freetuts.net";
$pattern = '/net/';
preg_match[$pattern, $subject, $matches];
echo '
';
print_r[$matches];
echo '
';
7

4. Lời kết

Bài này mình thấy khá là hay bởi vì kết hợp RegEx với hàm preg_match[] trong PHP bạn có thể lấy bất kỳ chuỗi con nào miễn phí có một quy tắc để lấy, hàm này không dùng để lấy chuỗi con dựa vào

Ngoài ra chúng ta hay sử dụng hàm preg_match[] để xác thực dữ liệu như kiểm tra định dạng Email, Điện thoại,. và một chức năng khác hay khác là tách dữ liệu từ trang web khác

Chủ Đề