Cách tạo slug tự động bằng PHP
Đường dẫn thân thiện trong website khá là quan trọng trong SEO, sẽ giúp các công cụ tìm kiếm index tốt hơn, còn nếu bạn chỉ để các dạng URL như (acb.com?id=100) thì nó không thật sự tốt lắm. Bài này mình sẽ gợi ý cho các bạn 1 hàm làm việc tự động cho yêu cầu này. Bạn chỉ cần đưa vào 1 chuỗi tiêu đề bài viết nó sẽ sinh ra cho bạn slug tương ứng.
Để hiểu hơn về ví dụ thì bạn cần có 1 chút kiến thức cơ bản về Regular Expression nhé. Kiến thức này có trên trang tài liệu của PHP rồi nên mình nghĩ không cần nói nhiều 😀
function slugify($str) { $str = trim(mb_strtolower($str)); $str = preg_replace('/(à|á|ạ|ả|ã|â|ầ|ấ|ậ|ẩ|ẫ|ă|ằ|ắ|ặ|ẳ|ẵ)/', 'a', $str); $str = preg_replace('/(è|é|ẹ|ẻ|ẽ|ê|ề|ế|ệ|ể|ễ)/', 'e', $str); $str = preg_replace('/(ì|í|ị|ỉ|ĩ)/', 'i', $str); $str = preg_replace('/(ò|ó|ọ|ỏ|õ|ô|ồ|ố|ộ|ổ|ỗ|ơ|ờ|ớ|ợ|ở|ỡ)/', 'o', $str); $str = preg_replace('/(ù|ú|ụ|ủ|ũ|ư|ừ|ứ|ự|ử|ữ)/', 'u', $str); $str = preg_replace('/(ỳ|ý|ỵ|ỷ|ỹ)/', 'y', $str); $str = preg_replace('/(đ)/', 'd', $str); $str = preg_replace('/[^a-z0-9-\s]/', '', $str); $str = preg_replace('/([\s]+)/', '-', $str); return $str; }
Bên trên là function làm việc đó. Bây giờ bạn chỉ cần đặt vào code của mình trước khi sử dụng là được. Cách dùng thì khá là đơn giản
$str = "Đây là tiêu đề bài viết"; $slug = slugify($str); echo $slug;
Như vậy là mình đã gợi ý cho các bạn cách tạo 1 slug cho bài viết rồi. Bạn nên lưu nó vào database để thuận tiện cho việc truy xuất dữ liệu về sau.
Có thắc mắc gì các bạn cứ để lại ở phần Bình luận nhé!