Biểu thức chính quy (regular expressions – còn gọi là regex hoặc regexp) là các mẫu dùng để tìm kiếm các bộ kí tự được kết hợp với nhau trong các chuỗi kí tự. Regular Expressions thực sự rất hữu ích cho phép tìm kiếm, xác thực, tìm kiếm, xác định hoặc thay thế văn bản, từ hoặc bất kỳ loại ký tự nào. Các mẫu này được sử dụng rất nhiều trong bất kỳ ngôn ngữ lập trình nào. Tôi liệt kê hơn 15 mẫu thông dụng có thể hữu ích cho bất kỳ chuyên viên phát triển PHP nào.
Regular Expressions | Mô tả |
daipho | Chuỗi “daipho” |
^daipho | chuỗi bắt đầu bằng “daipho” |
daipho$ | chuỗi kết thúc bằng “daipho” |
^daipho$ | “daipho” khi nó ở một mình trong một chuỗi |
[abc] | a, b, hoặc c |
[a-z] | Mọi ký tự thường |
[^A-Z] | Bất kỳ ký tự nào không phải là chữ in hoa |
(gif|jpg) | Khớp với “gif” hoặc “jpeg” |
[a-z]+ | Một hoặc nhiều chữ thường |
[0-9.-] | Bất kỳ ký hiệu số, dấu chấm hoặc dấu trừ |
^[a-zA-Z0-9_]{1,}$ | Bất kỳ ký tự nào có ít nhất một chữ cái, số hoặc dấu _ |
([wx])([yz]) | wy, wz, xy, or xz |
[^A-Za-z0-9] | Bất kỳ ký tự đặc biệt nào không phải là số hoặc chữ cái |
([A-Z]{3}|[0-9]{4}) | Khớp ba chữ cái hoặc bốn ký số |
Xóa ký tự đặc biệt khỏi chuỗi
PHP regex hữu dụng để loại bỏ các ký tự đặc biệt khỏi chuỗi.
$value = preg_replace("/[^A-Za-z0-9]/", "", $value);
Xác thực tên người dùng
Đây là tiện ích PHP regex để xác thực tên người dùng, bao gồm ký tự, ký số (a-z, A-Z, 0-9), dấu gạch dưới và có tối thiểu 5 ký tự và tối đa 20 ký tự. Bạn cũng có thể thay đổi ký tự tối thiểu và ký tự tối đa thành bất kỳ số nào bạn thích.
$username = "user_name12"; if ( preg_match('/^[a-z\d_]{5,20}$/i', $username) ) { echo "Your username is ok."; } else { echo "Wrong username format."; }
Tạo hình thu nhỏ (thumbnail) của YouTube
Tạo URL hình thu nhỏ của YouTube từ URL video YouTube.
function youtube_video_thumbnail($url, $index=0) { if ( preg_match('/^[^v]+v.(.{11}).*/', $url, $matches) ){ return 'http://img.youtube.com/vi/' . $matches[1] . '/' . $index . '.jpg'; } elseif ( preg_match('/youtube.com\/user\/(.*)\/(.*)$/', $url, $matches) ){ return 'http://img.youtube.com/vi/' . $matches[2] . '/' . $index . '.jpg'; } else { return false; } }
Thay thế một URL bằng tên miền của nó và tạo liên kết
preg_replace("/http:\/\/([^\/]+)[^\s]*/", "$1", $text);
Thêm thuộc tính Alt bị thiếu vào hình ảnh
Đây là một hàm PHP hữu ích. Nếu hình ảnh trong nội dung của bạn thiếu tag alt, đoạn code này sẽ thêm tiêu đề bài đăng làm tag alt cho hình ảnh.
function add_alt_tags($content) { global $post; preg_match_all('/<img (.*?)\/ >/', $content, $images); if( !is_null($images) ) { foreach($images[1] as $index => $value) { if( !preg_match('/alt=/', $value) ) { $new_img = str_replace('<img', '<img alt="'. get_the_title(). '"', $images[0][$index]); $content = str_replace($images[0][$index], $new_img, $content); } } } return $content; } add_filter('the_content', 'add_alt_tags', 99999);
Liên kết Mailto tự động
$string = preg_replace ('([_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,4})', '<a href="mailto:\\1">\\1</ a>', $text); echo $string;
Kiểm duyệt những từ xấu với regex
Hàm này sử dụng sức mạnh của regex để kiểm tra xem trên văn bản có một số từ xấu nào đó hay không, hàm này cũng cung cấp khả năng thay đổi danh sách các từ cho một từ khác.
function filtrado($texto, $reemplazo = false) { $filtradas = 'ding, shit'; $f = explode(',', $filtradas); $f = array_map('trim', $f); $filtro = implode('|', $f); return ($reemplazo) ? preg_replace("#$filtro#i", $reemplazo, $texto) : preg_match("#$filtro#i", $texto) ; }