Hàm preg_macth là một trong những hàm khá quan trọng trong lập trình PHP dùng để lọc kiểm tra cũng như. Nó giúp chúng ta kiểm tra, so sánh và đưa ra kết quả theo ý muốn mà bạn muốn.
Sau đây mình sẽ nói chi tiết về hàm này
preg_match ($pattern, $subject, &$matches)
$pattern: là biểu thức Regular Expression
$subject: là chuỗi mà bạn cần kiểm tra
$matches: là kết quả trả về, nó được truyền ở dạng tham chiếu
Kết quả mà preg_match trả về sẽ là TRUE hoặc FALSE
hoặc
int preg_match ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] )
Ở đây mình có một ví dụ kiểm tra url để cho nó hiển thị đó là url nội hay ngoại, tức là kiểm tra url của site hay của site khác như sau
if (preg_macth("/^(.*?)\:\/\//i", $url) or preg_match("/^\/\//i" , $url ))
- Hai ký tự // ở đầu và cuối là đánh dấu nhận biết mở và kết biểu thức
- Chữ i để chỉ ra là không phân biện viết hoa viết thường
- (.*?) chuỗi này chỉ ra là nhận dạng tất cả các ký tự nếu có hoặc không có
- Ký tự ^ để chỉ ra bắt đầu chuỗi
- Còn trước mỗi ký tự có cái \
Tức là chỉ ra rằng sau đó là ký tự thuần không phải là ký tự đặc biệt
Một ví dụ nữa
$subject = "thinhweb.com"; $pattern = '/com/'; preg_match($pattern, $subject, $matches); echo '<pre>'; print_r($matches); echo '</pre>';
Như vậy kết quả trả về sẽ là
Array ( [0] => com )
Để hiểu hơn thì có nghĩa là đúng giá trị trả về của $matches sẽ là mảng array có giá trị đầu tiên là “com“, mà trong chuỗi cần kiểm tra có “com“. Lúc này điều kiện sẽ đúng (TRUE)
Kết luận
Bạn có thể sử dụng nó bất cứ chỗ nào trong quá trình viết code nhưng phải đúng trường hợp sử dụng tránh để bị bug cũng như sử dụng sao cho thích hợp. Hơn nữa với “preg_match()” bạn phải sử dụng thường xuyên mới có thể nhớ các kiểu của nó nhất là trường hợp bắt url như link youtube,.. để có thể cho đầu ra phù hợp hơn với yêu cầu.