Hàm create_slug() giúp bạn tạo ra một chuỗi không dấu (slug) phục vụ cho quá trình xây dựng link thân thiện website cho bài viết, sản phẩm…

Slug là gì?

Slug là chuỗi không dấu và các từ nội với nhau bởi “-“, chuỗi phục vụ cho việc xây dựng link thân thiện (friendly Url) của các phần như bài viết, sản phẩm…

Ví dụ:

unitop-hoc-lap-trinh-web-di-lam

Cấu trúc của hàm create_slug()

<?php
/**
 * Chuyển đổi chuỗi kí tự thành dạng slug dùng cho việc tạo friendly url.
 * @access    public
 * @param string
 * @return    string
 */
if (!function_exists('create_slug')) {
    function create_slug($string)
    {
        $search = array(
            '#(à|á|ạ|ả|ã|â|ầ|ấ|ậ|ẩ|ẫ|ă|ằ|ắ|ặ|ẳ|ẵ)#',
            '#(è|é|ẹ|ẻ|ẽ|ê|ề|ế|ệ|ể|ễ)#',
            '#(ì|í|ị|ỉ|ĩ)#',
            '#(ò|ó|ọ|ỏ|õ|ô|ồ|ố|ộ|ổ|ỗ|ơ|ờ|ớ|ợ|ở|ỡ)#',
            '#(ù|ú|ụ|ủ|ũ|ư|ừ|ứ|ự|ử|ữ)#',
            '#(ỳ|ý|ỵ|ỷ|ỹ)#',
            '#(đ)#',
            '#(À|Á|Ạ|Ả|Ã|Â|Ầ|Ấ|Ậ|Ẩ|Ẫ|Ă|Ằ|Ắ|Ặ|Ẳ|Ẵ)#',
            '#(È|É|Ẹ|Ẻ|Ẽ|Ê|Ề|Ế|Ệ|Ể|Ễ)#',
            '#(Ì|Í|Ị|Ỉ|Ĩ)#',
            '#(Ò|Ó|Ọ|Ỏ|Õ|Ô|Ồ|Ố|Ộ|Ổ|Ỗ|Ơ|Ờ|Ớ|Ợ|Ở|Ỡ)#',
            '#(Ù|Ú|Ụ|Ủ|Ũ|Ư|Ừ|Ứ|Ự|Ử|Ữ)#',
            '#(Ỳ|Ý|Ỵ|Ỷ|Ỹ)#',
            '#(Đ)#',
            "/[^a-zA-Z0-9\-\_]/",
        );
        $replace = array(
            'a',
            'e',
            'i',
            'o',
            'u',
            'y',
            'd',
            'A',
            'E',
            'I',
            'O',
            'U',
            'Y',
            'D',
            '-',
        );
        $string = preg_replace($search, $replace, $string);
        $string = preg_replace('/(-)+/', '-', $string);
        $string = strtolower($string);
        return $string;
    }
}
?>

Thuật toán: Để tạo ra chữ không dấu thì cần tìm tất cả các biến thể có dấu của ký tự đó chuyển về ký tự gốc, như â => a, ô => o

Để thực hiện nó tôi lựa chọn sử dụng hàm preg_replace() để tìm kiếm và thay thế.

Để sử dụng hàm trên bạn cần copy mã nguồn của hàm bên trên và chạy nó trước khi sử dụng.

<?php
$title_1 = "Cách học Php hiệu quả";
echo create_slug($title_1),"<br>";

$title_2 = "Ngành công nghệ thông tin thiếu nhân lực trầm trọng";
echo create_slug($title_2),"<br>";
?>

Kết quả sau khi chạy chương trình

cach-hoc-php-hieu-qua
nganh-cong-nghe-thong-tin-thieu-nhan-luc-tram-trong

Tổng kết

Qua bài viết này tôi chia sẻ đến bạn hàm create_slug(). Một hàm tôi rất hay sử dụng trong các dự án lớn nhỏ và cũng chia sẻ trong chương trình PHP MASTER ở Unitop.vn.

Bây giờ bạn nên copy mã code của hàm, chạy test và áp dụng nó vào công việc đang cần.