- Khi bạn cần kiểm tra 1 chuỗi $str xem có định dạng đúng với các yêu cầu bạn cần hay không VD: chuỗi có gồm 3 ký tự, chuỗi có các ký tự giống nhau liền kề, chuỗi có tồn tại dấu -,+,….
- Khi bạn cần kiểm tra 1 chuỗi $str trong các thẻ a, link, h, p ,.. xem có định dạng đầu tiên là ký tự < và kết thúc là ký tự > nếu có bạn sẽ thay thế hết đoạn <… ký tự cần xác định > thành ký tự xyz bạn cần. VD: $str=”<h1>tôi yêu lập trình web php</h1>, <p>cách dùng hàm preg_match trong lập trình php</p>”; bạn muốn biến đổi thành : “xyztôi yêu lập trình web phpxyz, xyzcách dùng hàm preg_match trong lập trình phpxyz”.
- Ở 2 tình huống bạn thấy các chuỗi string không cố định, chúng biến đổi liên tục trong từng đoạn dữ liệu. Nếu bạn xử lý code bằng các hàm for, tìm và thay thế thì code sẽ chạy rất lâu và rất khó xử lý chúng.
- Vì lý do đó php cho chúng ta hàm preg_… để xử lý các tình huống khó khăn như trên VD: preg_match,preg_replace,….
Nay mình hướng dẫn các bạn cách sử dụng hàm preg_match một cách chi tiết và tốt nhất.
1.Dạng dùng cặp dấu /../ để bắt đầu và kết thúc chuổi định dạng.
<?php if (preg_match("/PHP/", "cách dùng hàm preg_match trong lập trình php.")) { echo "Đã tìm thấy ký tự cần tìm."; } else { echo "Không tìm thấy ký tự cần tìm."; } ?>
Giải thích : Hàm trên dùng để kiểm tra xem có tồn tại chuổi “PHP” không? Kết quả là không. Vì trong chuổi mẹ chỉ có chữ php (viết thường).
2. Để chỉ định không phân biết chữ hoa hay chữ thường ta dùng kí hiệu i.
<?php if (preg_match("/PHP/i", "cách dùng hàm preg_match trong lập trình php.")) { echo "Đã tìm thấy ký tự cần tìm."; } else { echo "Không tìm thấy ký tự cần tìm."; } ?>
Giải thích : Hàm trên dùng để kiểm tra xem có tồn tại chuổi “PHP” trong chuỗi “cách dùng hàm preg_match trong lập trình php.” không và không phân biệt chữ hoa, chữ thường ? Kết quả là có. Vì trong chuổi mẹ có chữ php (viết thường).
3.Dấu ^ để qui định chuổi định dạng nằm ở vị trí đầu tiên của chuổi mẹ.
<?php if (preg_match("/^PHP/i", "cách dùng hàm preg_match trong lập trình php.")) { echo "Đã tìm thấy ký tự cần tìm."; } else { echo "Không tìm thấy ký tự cần tìm."; } ?>
Giải thích : Hàm kiểm tra xem có chuỗi “PHP” nằm ở vị trí đầu trong chuỗi “cách dùng hàm preg_match trong lập trình php.” hay không, kết quả là không tìm thấy. Vì chử php không nằm ở vị trí đầu tiên.
4.Dầu $ qui định chuổi định dạng nằm ở vị trí cuối cùng của chuổi mẹ.
<?php if (preg_match("/PHP$/i", "cách dùng hàm preg_match trong lập trình php")) { echo "Đã tìm thấy ký tự cần tìm."; } else { echo "Không tìm thấy ký tự cần tìm."; } ?>
Giải thích : Hàm kiểm tra xem có chuỗi “PHP” nằm ở vị trí cuối cùng trong chuỗi “cách dùng hàm preg_match trong lập trình php” hay không, kết quả là có tìm thấy. Vì chử php có nằm ở vị trí cuối cùng.
5.Dấu \s để qui định khỏang trắng
<?php if (preg_match("/PHP(\s)tốt/i", "cách dùng hàm preg_match trong lập trình php tốt")) { echo "Đã tìm thấy ký tự cần tìm."; } else { echo "Không tìm thấy ký tự cần tìm."; } ?>
Giải thích: Hàm kiểm tra xem có chuỗi “PHP tốt” mà ở giữa chuỗi phải có khoảng trắng trong chuỗi “cách dùng hàm preg_match trong lập trình php tốt” hay không, kết quả là là có.
6.Dấu ? để qui định: không tồn tại, hoặc nếu tồn tại thì chỉ có 1 thôi
<?php if (preg_match("/PHP(\s)?tốt/i", "cách dùng hàm preg_match trong lập trình php tốt")) { echo "Đã tìm thấy ký tự cần tìm."; } else { echo "Không tìm thấy ký tự cần tìm."; } ?>
Giải thích: Hàm kiểm tra xem có chuỗi “PHP tốt” hoặc “PHPtốt” có tồn tại ít nhất 1 lần trong chuỗi “cách dùng hàm preg_match trong lập trình php tốt” hay không, kết quả là là có tìm thấy.
7.Dấu * để qui định: không tồn tại, hoặc nếu có thì có thể có nhiều
<?php if (preg_match("/PHP(\s)*tốt/i", "cách dùng hàm preg_match trong lập trình php tốt")) { echo "Đã tìm thấy ký tự cần tìm."; } else { echo "Không tìm thấy ký tự cần tìm."; } ?>
Giải thích: Hàm kiểm tra xem có chuỗi “PHP tốt” ở giữa có nhiều khoảng trắng hoặc “PHPtốt” có tồn tại trong chuỗi “cách dùng hàm preg_match trong lập trình php tốt” hay không, kết quả là là có tìm thấy.
8.Dấu + để qui định: phải tồn tại từ 1 trở lên.
<?php if (preg_match("/PHP(\s)+tốt/i", "Tự học lập trình php tốt nhất và cách dùng hàm preg_match trong lập trình phptốt")) { echo "Đã tìm thấy ký tự cần tìm."; } else { echo "Không tìm thấy ký tự cần tìm."; } ?>
Giải thích: Hàm kiểm tra xem có chuỗi “PHP tốt” ở giữa có một khoảng trắng trở lên có tồn tại trong chuỗi “Tự học lập trình php tốt nhất và cách dùng hàm preg_match trong lập trình phptốt” hay không, kết quả là là không tìm thấy vì chỉ chõ chuỗi 1 khoảng trắng và không có khoảng trắng (PHP tốt và phptốt).
<?php if (preg_match("/[_,]php/i", "_PHP cách dùng hàm preg_match trong lập trình php.")) { echo "Đã tìm thấy ký tự cần tìm."; } else { echo "Không tìm thấy ký tự cần tìm."; } ?>
Giải thích : hàm kiểm tra xem chuỗi “_php” hoặc “,php” có tồn tại trong chuỗi “_PHP cách dùng hàm preg_match trong lập trình php.” hay không. Kết quả là có vì ta tìm thấy chuỗi con là “_PHP”
10.A-Z, a-z , A-z qui định một kí tự viết hoa, viết thường, tất cả. Phải đi kèm với dấu []
<?php if (preg_match("/[a-z]php/i", "xyzPHP cách dùng hàm preg_match trong lập trình php.")) { echo "Đã tìm thấy ký tự cần tìm."; } else { echo "Không tìm thấy ký tự cần tìm."; } ?>
Giải thích : hàm kiểm tra xem trước chuỗi “php” có tồn tại các ký tự từ “a->z” trong chuỗi “xyzPHP cách dùng hàm preg_match trong lập trình php.” hay không. Kết quả là có vì ta tìm thấy chuỗi con là “xyzPHP”
11. 0-9 qui định một kí số
<?php if (preg_match("/[0-9]php/i", "cách dùng hàm preg_match trong lập trình 99php.")) { echo "Đã tìm thấy ký tự cần tìm."; } else { echo "Không tìm thấy ký tự cần tìm."; } ?>
Giải thích : hàm kiểm tra xem trước chuỗi “php” có tồn tại các ký tự số từ “0->9” trong chuỗi “cách dùng hàm preg_match trong lập trình 99php.” hay không. Kết quả là có vì ta tìm thấy chuỗi con là “99php”
12. [A-z0-9]: một kí tự họăc một kí số
<?php if (preg_match("/[A-z0-9]php/i", "PHP và cách dùng hàm preg_match.")) { echo "Đã tìm thấy ký tự cần tìm."; } else { echo "Không tìm thấy ký tự cần tìm."; } ?>
Giải thích : hàm kiểm tra xem trước chuỗi “PHP” có tồn tại các ký tự số từ “0->9” và ký tự “a->z” trong chuỗi “PHP và cách dùng hàm preg_match.” hay không. Kết quả là không tìm thấy vì ta tìm thấy chuỗi “PHP” trước đó không có ký tự số và ký tự chữ.
13. {} qui định số lượng
<?php if (preg_match("/[a-z]{4,5}php/i", "PHP và cách dùng hàm preg_match.")) { echo "Đã tìm thấy ký tự cần tìm."; } else { echo "Không tìm thấy ký tự cần tìm."; } ?>
Giải thích : hàm kiểm tra xem trước chuỗi “PHP” có tồn tại từ 4 hoặc 5 các ký tự “a->z” trong chuỗi “PHP và cách dùng hàm preg_match.” hay không. Kết quả là không tìm thấy vì trước chuỗi “PHP” ở trên không có ký tự nào ở trước nó.
Kết thúc : kiến thức thu thập được từ internet và đã chỉnh sửa lại, cảm ơn người viết bài.