Hướng dẫn dùng preg_match_all trong PHP
Hàm Show Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức. 1. Hàm preg_match_all trong PHPHàm
Ví dụ: lấy đoạn chuỗi bên trong cặp nháy kép của chuỗi 'xin chào "các bạn", chào mừng đến "freetuts.net"'. Sử dụng hàm preg_match:Trong ví dụ này có hai chuỗi nằm trong cặp nháy kép đó là chuỗi 'các bạn' và chuỗi 'freetuts.net'. Bây giờ ta sử dụng hàm Bài viết này được đăng tại [free tuts .net] $subject = 'Hello "Everybody", welcome to "freetuts.net"'; preg_match('/"(.+)"/', $subject, $matches); echo ''; print_r($matches); echo ''; Kết quả sẽ là: Array ( [0] => "Everybody", welcome to "freetuts.net" [1] => Everybody", welcome to "freetuts.net ) Mục đích của ta
chỉ lấy đoạn text bên trong cặp nháy kép, nhưng nó trả về dài quá :D. Lý do là nó duyệt từ dấu nháy đầu chuỗi cho đến cuối chuỗi nên kết quả mới như vậy, đây gọi là hiện tượng Greedy mà chúng ta đã học ở bài các quy tắc Regular Expression căn bản. Vậy để lấy đoạn text trong cặp dấu nháy thứ nhất thì ta phải thêm dấu $subject = 'Hello "Everybody", welcome to "freetuts.net"'; preg_match('/"(.+?)"/', $subject, $matches); echo ''; print_r($matches); echo ''; Kết quả sẽ là: Array ( [0] => "Everybody" [1] => Everybody ) Sử dụng hàm preg_match_all:Như vậy các bạn thấy
Như ở ví dụ trên, tức là lấy tất cả các chuỗi bên trong cặp nháy kép của chuỗi 'xin chào "các bạn", chào mừng đến "freetuts.net"'. $subject = 'Hello "Everybody", welcome to "freetuts.net"'; preg_match_all('/"(.+?)"/', $subject, $matches); echo ''; print_r($matches); echo ''; Kết quả là : Array ( [0] => Array ( [0] => "Everybody" [1] => "freetuts.net" ) [1] => Array ( [0] => Everybody [1] => freetuts.net ) ) Kết quả nó trả về một mảng gồm 2 phần tử và giá trị của mỗi phần tử giống như hàm kết quả của hàm Giờ bạn thay đổi chuỗi Array ( [0] => Array ( [0] => "Everybody" [1] => "freetuts.net" [2] => "like it" ) [1] => Array ( [0] => Everybody [1] => freetuts.net [2] => like it ) ) Rất đơn giản đúng không nào. Bây giờ lấy kết quả thì có 2 lựa chọn:
Giải thích tại sao lại có 2 phần tử thì như bài trước, phần tử thứ nhất là toàn chuỗi toàn partern, phần tử thứ 2 là kết quả của đoạn RegEx 2. Ví dụ hàm preg_match_all trong PHPMình sẽ đưa ra một ví dụ để các bạn thực hành như sau: Lấy tất cả nội dung bên trong tất
cả thẻ Ta có hai vấn đề cần quan tâm:
|