Cách loại bỏ dấu tiếng Việt với PHP
Khi bạn cần tìm kiếm không dấu hoặc tạo các URL thân thiện cho website thì việc loại bỏ dấu cho Tiếng Việt khá quan trọng. Bài viết sẽ hướng dẫn các bạn cách thực hiện việc này với ngôn ngữ PHP.
Xây dựng hàm vn_str_filter($str) để loại bỏ dấu tiếng Việt khỏi 1 chuỗi. Khi gọi hàm: vn_str_filter("Hoàng Sa, Trường Sa là của Việt Nam") sẽ được kết quả là "Hoang Sa, Truong Sa la cua Viet Nam".
Ta sử dụng 2 hàm sau:
foreach(): duyệt mảng
preg_replace: tìm và thay thế các âm tiếng Việt từ có dấu thành không dấu.
Ta viết hàm vn_str_filter như sau:
<?php function vn_str_filter ($str){ $unicode = array( 'a'=>'á|à|ả|ã|ạ|ă|ắ|ặ|ằ|ẳ|ẵ|â|ấ|ầ|ẩ|ẫ|ậ', 'd'=>'đ', 'e'=>'é|è|ẻ|ẽ|ẹ|ê|ế|ề|ể|ễ|ệ', 'i'=>'í|ì|ỉ|ĩ|ị', 'o'=>'ó|ò|ỏ|õ|ọ|ô|ố|ồ|ổ|ỗ|ộ|ơ|ớ|ờ|ở|ỡ|ợ', 'u'=>'ú|ù|ủ|ũ|ụ|ư|ứ|ừ|ử|ữ|ự', 'y'=>'ý|ỳ|ỷ|ỹ|ỵ', 'A'=>'Á|À|Ả|Ã|Ạ|Ă|Ắ|Ặ|Ằ|Ẳ|Ẵ|Â|Ấ|Ầ|Ẩ|Ẫ|Ậ', 'D'=>'Đ', 'E'=>'É|È|Ẻ|Ẽ|Ẹ|Ê|Ế|Ề|Ể|Ễ|Ệ', 'I'=>'Í|Ì|Ỉ|Ĩ|Ị', 'O'=>'Ó|Ò|Ỏ|Õ|Ọ|Ô|Ố|Ồ|Ổ|Ỗ|Ộ|Ơ|Ớ|Ờ|Ở|Ỡ|Ợ', 'U'=>'Ú|Ù|Ủ|Ũ|Ụ|Ư|Ứ|Ừ|Ử|Ữ|Ự', 'Y'=>'Ý|Ỳ|Ỷ|Ỹ|Ỵ', ); foreach($unicode as $nonUnicode=>$uni){ $str = preg_replace("/($uni)/i", $nonUnicode, $str); } return $str; } ?>
Khi sử dụng ta gọi:
<?php echo vn_str_filter('Hoàng Sa, Trường Sa là của Việt Nam'); ?>