10/10/2018, 11:15
[HELP] Unicode với hàm strtolower() hay strtoupper()!??
2 hàm strtolower() hay strtoupper() sử dụng với tiếng Anh thì ko sao, khi sử dụng với các ký tự Unicode lại bị lỗi font chuyển thành mấy ký tự lạ đọc ko được, bạn nào bị chỗ này chưa chỉ m với
Bài liên quan
Vì mã của ẳ và Ẳ chắc gì cách nhau 32.
Một giải pháp:
Thay vì dùng strtolower($str) thử dùng mb_strtolower($str, "utf8")
<?php
$mb_str = "Sử dụng hàm có sẵn";
$mb_str = mb_strtoupper($mb_str,"utf8");
$css_str = "Sử dụng bảng kiểu";
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>TEST</title>
<style>
.inhoa{
text-transform:uppercase;
}
</style>
</head>
<body>
<?php echo $mb_str;?><br>
<span class="inhoa"><?php echo $css_str;?></span>
</body>
</html>
Content-Type: text/html; charset=utf-8
function parse($str) {
$str = trim($str);
$str = trim($str, ' ');
while (strpos($str, ' '))
$str = str_ireplace(' ', ' ', $str);
$str = mb_convert_case($str, MB_CASE_TITLE, "UTF-8");
return $str;
}
echo parse(' đỒ âhÍ mInH ');
<div style="text-transform:lowercase;">
À Á
</div>
Còn nếu bác muốn viết lại thì bác phải replace char vào tương ứng với đống này :
'/À|Á|Ạ|Ả|Ã|Â|Ầ|Ấ|Ậ|Ẩ|Ẫ|Ă|Ằ|Ắ |Ặ|Ẳ|Ẵ/'
'/È|É|Ẹ|Ẻ|Ẽ|Ê|Ề|Ế|Ệ|Ể|Ễ/'
'/Ì|Í|Ị|Ỉ|Ĩ/'
'/Ò|Ó|Ọ|Ỏ|Õ|Ô|Ồ|Ố|Ộ|Ổ|Ỗ|Ơ|Ờ|Ớ |Ợ|Ở|Ỡ/'
'/Ù|Ú|Ụ|Ủ|Ũ|Ư|Ừ|Ứ|Ự|Ử|Ữ/'
'/Ỳ|Ý|Ỵ|Ỷ|Ỹ/'
'/Đ/'
Suy nghĩ chi cho mệt óc ^_^