Hướng dẫn dùng mstch trong PHP
Nếu bạn theo dõi serie học Regular Expression từ đầu cho tới giờ thì 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() trong PHPHàm
Trong đó:
Kết quả: Bài viết này được đăng tại [free tuts .net]
Ví dụ: kiểm tra một chuỗi có phải là một dãy số hay không. $pattern = '/^[0-9]+$/'; $subject = '0979306603'; if (preg_match($pattern, $subject, $matches)){ echo 'Đây là một dãy số'; } Nếu bạn thắc mắc tại sao biến Bây giờ mình sẽ thực hành một số ví dụ để bạn hiểu rõ hơn về hàm này nhé. 2. Các ví dụ hàm preg_match trong phpMình xin nhắc lại kết quả của hàm Ví dụ 1: xem thử giá trị của biến $subject = "freetuts.net"; $pattern = '/net/'; preg_match($pattern, $subject, $matches); echo ''; print_r($matches); echo ''; Kết quả: Như vậy kết quả trả về của biến Nếu bạn
thắc mắc tại sao mảng trả về lại ở dạng Ví dụ 2: Capturing Value - gom nhóm 1 cấp $subject = "freetuts.net"; $pattern = '/(net)/'; preg_match($pattern, $subject, $matches); echo ''; print_r($matches); echo ''; Kết quả: Array ( [0] => net [1] => net ) Ví dụ 3: Capturing Value - gom nhóm 2 cấp $subject = "freetuts.net"; $pattern = '/((net))/'; preg_match($pattern, $subject, $matches); echo ''; print_r($matches); echo ''; Kết quả: Array ( [0] => net [1] => net [2] => net ) Nhận xét:Cả 3 ví dụ trên đều cùng một mục đích là lấy ra chuỗi net, tuy nhiên cách khai báo lại khác nhau:
Và kết quả cũng khác nhau:
Nếu bạn không hiểu khái niệm về Capturing Value thì quay lại các bài trước dể đọc nhé:
Kết luận:Dựa vào nhận xét trên ta có được kết luận như sau:
3. Một vi dụ khác hàm preg_matchVí dụ 1: Chúng ta sẽ làm một ví dụ lấy domain của https://freetuts.net nằm trong một chuỗi cho trước. $subject = "website hoc mien phi https://freetuts.net rat la hay"; $pattern = '/(http)(.+)(net)/'; preg_match($pattern, $subject, $matches); echo ''; print_r($matches); echo ''; Kết quả sẽ trả về 4 phần tử tại vì trong pattern 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ử. Array ( [0] => https://freetuts.net [1] => http [2] => ://freetuts. [3] => net ) 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 ngoặc vuông // Lấy chuỗi nằm giữa 2 dấu [ và ] $subject = "Chuỗi cần lấy là [chuỗi này] mọi người"; $pattern = '/\[(.+)\]/'; if (preg_match($pattern, $subject, $matches)){ // kêt quả matches sẽ có 2 phần tử // phần tử thứ nhất là toàn regex => "[chuỗi này]" // chuỗi thứ 2 là kết quả đoạn regex bên trong dấu () => "chuỗi này" echo "kết quả toàn chuỗi là: 4. Lời kếtBà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 được bất
kì một chuỗi con nào miễn là có một quy tắc để lấy, hàm này không những dùng để lấy chuỗi con dựa vào việc so khớp mà nó còn có tác dụng kiểm tra kết quả so khớp và trả về Ngoài ra chúng ta hay sử dụng hàm preg_match() để validate dữ liệu như kiểm tra định dạng Email, Phone, .. và một chức năng khá hay khác là bóc tách dữ liệu từ website khác. |