Ví dụ ta có 1 tiêu đề bài viết như sau: “Cấu trúc dữ liệu và giải thuật” và chuỗi URL cần lấy là “cau-truc-du-lieu-va-giai-thuat”.
Đầu tiên ta sẽ dùng hàm str_replace() để thay thế hết khoảng trắng ” ” bằng dấu “-“. Lúc này chuỗi sẽ có dạng như sau: “Cấu-trúc-dữ-liệu-và-giải-thuật”. Sau đó việc tiếp theo đó là loại bỏ, thay thế các ký tự có dấu như “ă, â, í, ố, ….” . Ta sẽ tạo ra 1 mảng như để chứa ký tự được thay thế, các ký tự bị thay thế và dùng vòng lặp foreach để thay thế.
Lúc này chuỗi URL sẽ có dạng: “Cau-truc-du-lieu-va-giai-thuat”. Có thể thấy có ký tự viết hoa trong chuỗi, vì vốn dĩ tiêu đề người ta sẽ viết hoa ký tự đầu và có thể trong tiêu đề sẽ có những ký tự hoa khác. Để chuyển về dạng chuỗi có ký tự hoa về chuỗi có ký tự thường, ta dùng strtolower().
Dưới đây là code tham khảo:
<?php
function get_slug($text){
$slug = str_replace(" ", "-", $text);
$charRep = array(
"a" => array("á", "à", "ả", "ã", "ạ", "ă", "ắ", "ằ", "ẳ", "ẵ", "ặ", "â", "ấ", "ầ", "ẩ", "ẫ", "ậ"),
"d" => array("đ"),
"e" => array("é", "è", "ẻ", "ẽ", "ẹ", "ê", "ế", "ề", "ể", "ễ", "ệ"),
"i" => array("í", "ì", "ỉ", "ĩ", "ị"),
"o" => array("ó", "ò", "ỏ", "õ", "ọ", "ô", "ố", "ồ", "ổ", "ỗ", "ộ", "ơ", "ớ", "ờ", "ở", "ỡ", "ợ"),
"u" => array("ú", "ù", "ủ", "ũ", "ụ", "ư", "ứ", "ừ", "ử", "ữ", "ự"),
"y" => array("ý", "ỳ", "ỷ", "ỹ", "ỵ"),
"" => array("/", ":", ";", ".", ",", "!", "@", "#", "$", "%", "^", "&", "*", "(", ")", "=", "+", "~" , "'", "\"", "\\", "{", "}", "[", "]", "<", ">", "?", "\n")
);
foreach($charRep as $key => $arrKeyRep) {
foreach ($arrKeyRep as $index => $keyRep) {
$slug = str_replace($keyRep, $key, $slug);
}
}
$slug = strtolower($slug);
return $slug;
}
?>
Cách dùng như sau:
<?php
$title ="Cấu trúc dữ liệu và giải thuật";
$slug = get_slug($title);
?>
Hàm này sẽ giúp xử lý tiêu đề bài viết để tạo ra 1 chuỗi url bài viết (ví dụ: https://example.com/cau-truc-du-lieu-va-giai-thuat), điều này sẽ giúp đường dẫn url trở nên thân thiện hơn, ghi điểm trong mắt Google.