Lập trình PHP – Xây dựng hàm lấy chuỗi url từ tiêu đề bài viết

Rate this post

Cách thức xây dựng hàm:

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ế ( xem đoạn code bên dưới nhé ) và dùng vòng lặp foreach để thay thế ( cũng xem code bên dưới nhé ).

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ự 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().

Đây là phần code tham khảo ( nếu có sai sót gì mọi người bình luận cho mình biết nhé ):

<?php
    function getURL($text){
            $url = str_replace(" ", "-", $text);
            $charRep = array(
                            "a" => array("á", "à", "ả", "ã", "ạ", "ă", "ắ", "ằ", "ẳ", "ẵ", "ặ", "â", "ấ", "ầ", "ẩ", "ẫ", "ậ"),
                            "e" => array("é", "è", "ẻ", "ẽ", "ẹ", "ê", "ế", "ề", "ể", "ễ", "ệ"),
                            "i" => array("í", "ì", "ỉ", "ĩ", "ị"),
                            "o" => array("ó", "ò", "ỏ", "õ", "ọ", "ô", "ố", "ồ", "ổ", "ỗ", "ộ", "ơ", "ớ", "ờ", "ở", "ỡ", "ợ"),
                            "u" => array("ú", "ù", "ủ", "ũ", "ụ", "ư", "ứ", "ừ", "ử", "ữ", "ự"),
                            "y" => array("ý", "ỳ", "ỷ", "ỹ", "ỵ"),
                            "" => array("/", ":", ";", ".", ",", "!", "@", "#", "$", "%", "^", "&", "*", "(", ")", "=", "+", "~" , "'", "\"", "\\", "{", "}", "[", "]", "<", ">", "?", "\n")
                        );
            foreach($charRep as $key => $arrKeyRep){
                foreach ($arrKeyRep as $index => $keyRep){
                    $url = str_replace($keyRep, $key, $url);
                }
            }
            $url = strtolower($url);
            return $url;
     }
?>

Cách dùng như sau:

<?php
	  $title ="Cấu trúc dữ liệu và giải thuật";
	  $url = getURL($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ụ như thế này: https://www.phanxuanchanh.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.

Hits: 3

Leave a Reply