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: <?phpif (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: <?phpif (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: <?phpif (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: <?phpif (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: <?phpif (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: <?phpif (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: <?phpif (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: <?phpif (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). 9.Cặp dấu [] để liệt kê PHP: <?phpif (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: <?phpif (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: <?phpif (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: <?phpif (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: <?phpif (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. ITSEOVN mong những kiến thức này sẽ giúp được cho các bạn đang và sẽ học lập trình php.
preg_filter: Thực hiện việc tìm kiếm và thay thế các ký tự trong một chuỗi preg_grep: Trả về kết quả là một mảng các phần tử mà thỏa mãn mẫu tìm kiếm (pattern) preg_last_error: Trả về mã lỗi của hàm PCRE vừa thực thi trước đó preg_match_all: Thực hiện hàm so sánh toàn diện từ đầu đến cuối preg_match: Thực hiện hàm so sánh và dừng lại sau khi thấy mẫu preg_quote: Thêm các dấu quote \ trước các ký tự đặc biệt preg_replace_callback: Thực hiện việc tìm kiếm mẫu, thay thế bằng một chuỗi ký bằng hàm preg_replace: Thực hiện việc tìm kiếm mẫu và thay thế bằng một chuỗi ký tự preg_split: Tách một chuỗi ký tự bằng các ký tự đặc biệt