Chuyển đổi chữ cái Unicode có dấu thành không dấu trong PHP
Hướng dẫn cách sử dụng PHP để chuyển đổi các chữ cái Unicode có dấu trong bảng chữ cái tiếng Việt thành các chữ cái không dấu. Mã PHP này giúp xử lý văn bản tiếng Việt dễ dàng và hiệu quả.
<?php
function remove_accents($str) {
// Mảng thay thế các ký tự có dấu thành không dấu
$accents = array(
'á'=>'a', 'à'=>'a', 'ả'=>'a', 'ã'=>'a', 'ạ'=>'a', 'ă'=>'a', 'ắ'=>'a', 'ằ'=>'a', 'ẳ'=>'a', 'ẵ'=>'a', 'ặ'=>'a',
'â'=>'a', 'ấ'=>'a', 'ầ'=>'a', 'ẩ'=>'a', 'ẫ'=>'a', 'ậ'=>'a',
'é'=>'e', 'è'=>'e', 'ẻ'=>'e', 'ẽ'=>'e', 'ẹ'=>'e', 'ê'=>'e', 'ế'=>'e', 'ề'=>'e', 'ể'=>'e', 'ễ'=>'e', 'ệ'=>'e',
'í'=>'i', 'ì'=>'i', 'ỉ'=>'i', 'ĩ'=>'i', 'ị'=>'i',
'ó'=>'o', 'ò'=>'o', 'ỏ'=>'o', 'õ'=>'o', 'ọ'=>'o', 'ô'=>'o', 'ố'=>'o', 'ồ'=>'o', 'ổ'=>'o', 'ỗ'=>'o', 'ộ'=>'o',
'ơ'=>'o', 'ớ'=>'o', 'ờ'=>'o', 'ở'=>'o', 'ỡ'=>'o', 'ợ'=>'o',
'ú'=>'u', 'ù'=>'u', 'ủ'=>'u', 'ũ'=>'u', 'ụ'=>'u', 'ư'=>'u', 'ứ'=>'u', 'ừ'=>'u', 'ử'=>'u', 'ữ'=>'u', 'ự'=>'u',
'ý'=>'y', 'ỳ'=>'y', 'ỷ'=>'y', 'ỹ'=>'y', 'ỵ'=>'y',
'đ'=>'d',
'Á'=>'A', 'À'=>'A', 'Ả'=>'A', 'Ã'=>'A', 'Ạ'=>'A', 'Ă'=>'A', 'Ắ'=>'A', 'Ằ'=>'A', 'Ẳ'=>'A', 'Ẵ'=>'A', 'Ặ'=>'A',
'Â'=>'A', 'Ấ'=>'A', 'Ầ'=>'A', 'Ẩ'=>'A', 'Ẫ'=>'A', 'Ậ'=>'A',
'É'=>'E', 'È'=>'E', 'Ẻ'=>'E', 'Ẽ'=>'E', 'Ẹ'=>'E', 'Ê'=>'E', 'Ế'=>'E', 'Ề'=>'E', 'Ể'=>'E', 'Ễ'=>'E', 'Ệ'=>'E',
'Í'=>'I', 'Ì'=>'I', 'Ỉ'=>'I', 'Ĩ'=>'I', 'Ị'=>'I',
'Ó'=>'O', 'Ò'=>'O', 'Ỏ'=>'O', 'Õ'=>'O', 'Ọ'=>'O', 'Ô'=>'O', 'Ố'=>'O', 'Ồ'=>'O', 'Ổ'=>'O', 'Ỗ'=>'O', 'Ộ'=>'O',
'Ơ'=>'O', 'Ớ'=>'O', 'Ờ'=>'O', 'Ở'=>'O', 'Ỡ'=>'O', 'Ợ'=>'O',
'Ú'=>'U', 'Ù'=>'U', 'Ủ'=>'U', 'Ũ'=>'U', 'Ụ'=>'U', 'Ư'=>'U', 'Ứ'=>'U', 'Ừ'=>'U', 'Ử'=>'U', 'Ữ'=>'U', 'Ự'=>'U',
'Ý'=>'Y', 'Ỳ'=>'Y', 'Ỷ'=>'Y', 'Ỹ'=>'Y', 'Ỵ'=>'Y',
'Đ'=>'D'
);
// Thay thế các ký tự có dấu bằng ký tự không dấu
return strtr($str, $accents);
}
// Ví dụ sử dụng
$text = "Đây là ví dụ về chữ cái có dấu: á, ă, ở, đ.";
$no_accent_text = remove_accents($text);
echo $no_accent_text;
?>
Giải thích chi tiết:
-
Hàm
remove_accents
:- Sử dụng hàm
strtr()
để thay thế các ký tự có dấu bằng các ký tự không dấu dựa trên mảng$accents
. Mảng này bao gồm các ký tự có dấu trong tiếng Việt và giá trị tương ứng không có dấu của chúng.
- Sử dụng hàm
-
Mảng thay thế
$accents
:- Mỗi phần tử của mảng đại diện cho một ký tự có dấu và ký tự không dấu tương ứng. Mảng này bao gồm tất cả các ký tự trong bảng chữ cái tiếng Việt, cả viết hoa và viết thường.
-
Sử dụng hàm:
- Khi truyền một chuỗi có dấu vào hàm
remove_accents()
, hàm sẽ trả về chuỗi không dấu tương ứng.
- Khi truyền một chuỗi có dấu vào hàm
-
Ví dụ:
- Chuỗi
"Đây là ví dụ về chữ cái có dấu: á, ă, ở, đ."
sẽ được chuyển thành"Day la vi du ve chu cai co dau: a, a, o, d."
.
- Chuỗi
Phiên bản PHP:
Mã này hoạt động tốt trên tất cả các phiên bản PHP từ 5.6 trở lên, vì hàm strtr()
đã có từ các phiên bản cũ và hoạt động ổn định cho việc thay thế chuỗi.