Hàm preg_match dùng làm lấy hiệu quả theo biểu thức RegEx mà lại nó chỉ đem đúng một hiệu quả duy nhất. Ví dụ bạn muốn lấy chuỗi "darkedeneurope.com" vào chuỗi "darkedeneurope.com với darkedeneurope.com với darkedeneurope.com" thì nó chỉ trả về đúng một quý giá "darkedeneurope.com". Vậy để đưa hết tất cả ba chữ thì yêu cầu làm cố gắng nào? Ta sẻ áp dụng hàm preg_match_all.
Bạn đang xem: Hàm preg_match_all trong php


1. Hàm preg_match_all trong PHP
Hàm preg_match_all cũng có chức năng giống như preg_match đó là so khớp cùng trả về tác dụng của câu hỏi so khớp đó. Tuy vậy vẫn bao gồm sự biệt lập đó là:
preg_match chỉ chỉ trả về một kết quả cho từng regex con.preg_match_all đã trả về hết tác dụng so khớp chứ chưa phải là tác dụng đầu tiên như preg_match.Ví dụ: mang đoạn chuỗi bên phía trong cặp nháy kép của chuỗi "xin xin chào "các bạn", mừng đón đến "darkedeneurope.com"".
Sử dụng hàm preg_match:
Trong ví dụ này còn có hai chuỗi nằm trong cặp nháy kép chính là chuỗi "các bạn" cùng chuỗi "darkedeneurope.com". Bây chừ ta thực hiện hàm preg_match để mang xem công dụng thế nào.
Bài viết này được đăng trên
$subject = "Hello "Everybody", welcome lớn "darkedeneurope.com"";preg_match("/"(.+)"/", $subject, $matches);echo "";print_r($matches);echo "";
Mục đích của ta chỉ lấy đoạn text phía bên trong cặp nháy kép, nhưng lại nó trả về nhiều năm quá :D. Tại sao là nó chú ý từ dấu nháy đầu chuỗi cho đến cuối chuỗi nên hiệu quả mới như vậy, đây hotline là hiện tượng Greedy mà họ đã học tập ở bài các quy tắc Regular Expression căn bản. Vậy để đưa đoạn text trong cặp lốt nháy thứ nhất thì ta đề xuất thêm lốt ? đằng sâu vệt + của chuỗi partern trên, có ý nghĩa là lấy tác dụng match thứ nhất (chống greedy).
$subject = "Hello "Everybody", welcome to lớn "darkedeneurope.com"";preg_match("/"(.+?)"/", $subject, $matches);echo "";print_r($matches);echo "";
Sử dụng hàm preg_match_all:
Như vậy các bạn thấy preg_match chỉ mang được một tác dụng duy nhất. Gồm cách nào rước hết kết quả không? Để vấn đáp ta tò mò hàm preg_match_all nhé.Xem thêm: Xuống 2 Dòng Trong Html Bằng Thẻ Br, Xuống Dòng Trong Html Line Break
Cú pháp: preg_match_all ($pattern, $subject, &$matches)Trong đó:$partern là biểu thức Regular Expression$subject là chuỗi mong kiểm tra&$matches là biến chuyển lưu kết quả sau lúc matchNhư sinh sống ví dụ trên, có nghĩa là lấy toàn bộ các chuỗi bên trong cặp nháy kép của chuỗi "xin chào "các bạn", mừng đón đến "darkedeneurope.com"".
$subject = "Hello "Everybody", welcome to lớn "darkedeneurope.com"";preg_match_all("/"(.+?)"/", $subject, $matches);echo "";print_r($matches);echo "";
Array( <0> => Array ( <0> => "Everybody" <1> => "darkedeneurope.com" ) <1> => Array ( <0> => Everybody <1> => darkedeneurope.com ))
Kết trái nó trả về một mảng gồm 2 thành phần và giá trị của mỗi phần tử giống như hàm tác dụng của hàm preg_match bắt buộc mình không lý giải thêm về phần này nhé.
Giờ bạn biến hóa chuỗi $subject = "Hello "Everybody", welcome to "darkedeneurope.com", thanks for "like it"". Chúng ta chạy và kết quả sẽ là:
Array( <0> => Array ( <0> => "Everybody" <1> => "darkedeneurope.com" <2> => "like it" ) <1> => Array ( <0> => Everybody <1> => darkedeneurope.com <2> => lượt thích it ))
Rất dễ dàng đúng không nào. Bây chừ lấy hiệu quả thì tất cả 2 lựa chọn:
Giải thích tại sao lại tất cả 2 bộ phận thì như bài xích trước, phần tử thứ duy nhất là toàn chuỗi toàn partern, phần tử thứ 2 là tác dụng của đoạn RegEx (.+?).
2. Ví dụ như hàm preg_match_all vào PHP
Mình sẽ chỉ dẫn một ví dụ như để chúng ta thực hành như sau: Lấy tất cả nội dung bên phía trong tất cả thẻ div của một tệp tin html.
Ta gồm hai sự việc cần quan tâm:
Để lấy tất cả các đoạn text trong tất cả thẻ div thì ta phải dùng đến hàm preg_match_all trong php.Đoạn $pattern sẽ sở hữu dạng $pattern = "/(.*?)/". Lưu ý phải gồm dấu ? nha bạn, vì có dấu ? thì máy đang hiểu là đem từng hiệu quả chứ không phải duyệt không còn chuỗi rồi rước (gọi là Greedy, bạn quay trở về bài trước giúp thấy phần này nhé).
array(2) <0>=> array(3) <0>=> string(15) "Div1" <1>=> string(15) "Div2" <2>=> string(15) "Div3" <1>=> array(3) <0>=> string(4) "Div1" <1>=> string(4) "Div2" <2>=> string(4) "Div3"
3. Lời kết
Như vậy để đưa tất cả kết quả thì ta thực hiện hàm preg_match_all và chỉ còn lấy một công dụng đầu tiên thì ta thực hiện hàm preg_match. Thực tế thì bạn sử dụng hàm preg_match_all để sửa chữa thay thế cho hàm preg_match cũng được bằng cách lấy phần tử đầu tiên, tuy nhiên cách này rất xộc xệch nên tùy theo trường phù hợp mà áp dụng cho vừa lòng lý.Danh sách file cài đặt về
Tải bài học kinh nghiệm định dạng PDF | darkedeneurope.com hoặc gameportable.net |