10/10/2018, 10:57
PHP cần giúp đỡ về chuẩn hóa họ tên tiếng Việt.
Mình đang làm code chuẩn hóa tên tiếng Việt. Viết hoa chữ đầu và các chữ khác viết thường. Cách của mình là dùng hàm lower chuyển tất cả về chữ thường và sau đó dùng upwords chuyển chữ đầu của mỗi từ thành chữ hoa, vấn đề là nếu là những chữ như Đào thì sẽ bị chuyển thành đàO chữ ko thành Đào, còn các chữ khác thì vẫn bình thường. lỗi hình như do các hàm này ko hỗ trợ utf-8 hay sao đấy. Đây là code của mình:
$Hoten= mb_strtolower($Hoten,"UTF-8");
$Hoten = ucwords ($Hoten);
Mong các bro giúp đỡ.
$Hoten= mb_strtolower($Hoten,"UTF-8");
$Hoten = ucwords ($Hoten);
Mong các bro giúp đỡ.
Bài liên quan
ereg function has been DEPRECATED as of PHP 5.3.0. Relying on this feature is highly discouraged.
http://php.net/manual/en/function.ereg.php
Huống chi, việc xử lý DEPRECATED không phải là quá khó khăn. Trong PHP nếu 1 hàm bỏ đi thì sẽ có 1 hàm khác thay thế.
Từ trước tới nay trong những đoạn code tôi đưa ra thường có chứa rất nhiều lỗi, tôi cũng biết điều này nhưng tôi không sửa. Bởi vì, một là tôi không có nhiều thời gian, hai là tôi cũng muốn những người sử dụng cùng tham gia fix lỗi để có cơ hội tìm hiểu nó. Tôi chúa ghét những người chỉ biết copy & paste, xem lập trình như trò chơi xếp hình.
Tóm lại tất cả những code tôi đưa ra đều chỉ là ý tưởng tham khảo, việc áp dụng nó là phần của mỗi người,
<?php
function mb_ucwords($str)
{
return mb_convert_case($str, MB_CASE_TITLE, "UTF-8");
}
$str="lưu anh quyền";
$str = mb_ucwords($str);
echo $str;
?>
function stdName ($astr) {
// Chuẩn hóa xâu $astr theo định dạng tên người, tên địa danh
$retval = $astr;
//$retval = mb_convert_case($astr, MB_CASE_TITLE, "UTF-8");
// $astr ==> $retval
//xoa dau cach o dau
$length = strlen($retval);
while(substr($retval,0,1)==' ')
{
$retval = substr($retval,1,$length);
$length--;
}
//viết hoa kí tứ đầu
$retval = ucfirst($retval);
//xóa dấu cách ở cuỗi
$length = strlen($retval);
while(substr($retval,-1,1)=='')
{
$retval = substr($retval,0,$length-1);
$length--;
}
//Xóa dấu cách ở giữa
$length = strlen($retval);
for($i=0;$i< $length; $i ++){
$length = strlen($retval);
if(substr($retval,$i,1)==' '){
$flag = $i;
while(substr($retval,$flag,1)==' ')
$flag ++;
$retval = substr($retval,0,$i)." ".ucfirst(substr($retval,$flag,$length)) ;
}//end if
}//end for
$retval = mb_convert_case($retval,MB_CASE_TITLE,"UTF-8");
return $retval;
}