Lọc bỏ dấu tiếng việt 2007-07-09 09:23:59
Trong quá trình lập trình, có lúc chúng ta muốn lọc bỏ dấu tiếng Việt. (để search chẳng hạn). Tôi xin nêu ra một cách để cách để các bạn tham khảo:
Giả sử ta có một chuỗi :
<?
$cs="Thật là lắm chuyện";
$marTViet=array("à","á","ạ","ả","ã","â","ầ","ấ","ậ","ẩ","ẫ","ă",
"ằ","ắ","ặ","ẳ","ẵ","è","é","ẹ","ẻ","ẽ","ê","ề"
,"ế","ệ","ể","ễ",
"ì","í","ị","ỉ","ĩ",
"ò","ó","ọ","ỏ","õ","ô","ồ","ố","ộ","ổ","ỗ","ơ"
,"ờ","ớ","ợ","ở","ỡ",
"ù","ú","ụ","ủ","ũ","ư","ừ","ứ","ự","ử","ữ",
"ỳ","ý","ỵ","ỷ","ỹ",
"đ",
"À","Á","Ạ","Ả","Ã","Â","Ầ","Ấ","Ậ","Ẩ","Ẫ","Ă"
,"Ằ","Ắ","Ặ","Ẳ","Ẵ",
"È","É","Ẹ","Ẻ","Ẽ","Ê","Ề","Ế","Ệ","Ể","Ễ",
"Ì","Í","Ị","Ỉ","Ĩ",
"Ò","Ó","Ọ","Ỏ","Õ","Ô","Ồ","Ố","Ộ","Ổ","Ỗ","Ơ"
,"Ờ","Ớ","Ợ","Ở","Ỡ",
"Ù","Ú","Ụ","Ủ","Ũ","Ư","Ừ","Ứ","Ự","Ử","Ữ",
"Ỳ","Ý","Ỵ","Ỷ","Ỹ",
"Đ");
$marKoDau=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");
echo str_replace($marTViet,$marKoDau,$cs);
?>
đoạn mã trên sẽ in ra màn hình dòng chữ sau:
That la lam chuyen
Các bạn có cách nào khác thì post lên cho anh em tham khảo. Tôi cũng còn một cách khác dùng JavaScript, nhưng do không phải là php nên không tiện post
Tác giả: uoon
Tra loi 8 comment(s) 2007-07-09 09:23:59
gaulucky92 2008-02-21 10:55:02
Tra loi
Kay 2009-11-30 01:04:49
Tra loi
Joomla friends 2009-12-27 05:42:36
Mục đích là tách tiếng Việt có dấu sang không dấu.
Tra loi
Daniel 2010-01-29 03:22:48
Tra loi
Kay 2010-05-25 16:36:46
/* ------------- UTF8 to Ascii ------------- */
function utf8_to_ascii($str){
if(!$str) return false;
$unicode = array(
'a' => 'A|Á|À|Ả|Ã|Ạ|Ă|Ắ|Ằ|Ẳ|Ẵ|Ặ|Â|Ấ|Ầ|Ẩ|Ẫ|Ậ|á|à|ả|ã|ạ|ă|ắ|ằ|ẳ|ẵ|ặ|â|ấ|ầ|ẩ|ẫ|ậ',
'b' => 'B',
'c' => 'C',
'd' => 'D|Đ|đ',
'e' => 'E|É|È|Ẻ|Ẽ|Ẹ|Ê|Ế|Ề|Ể|Ễ|Ệ|é|è|ẻ|ẽ|ẹ|ê|ế|ề|ể|ễ|ệ',
'f' => 'F',
'g' => 'G',
'h' => 'H',
'i' => 'I|Í|Ì|Ỉ|Ĩ|Ị|í|ì|ỉ|ĩ|ị',
'j' => 'J',
'k' => 'K',
'l' => 'L',
'm' => 'M',
'n' => 'N',
'o' => 'O|Ó|Ò|Ỏ|Õ|Ọ|Ô|Ố|Ồ|Ổ|Ỗ|Ộ|Ơ|Ớ|Ờ|Ở|Ỡ|Ợ|ó|ò|ỏ|õ|ọ|ô|ố|ồ|ổ|ỗ|ộ|ơ|ớ|ờ|ở|ỡ|ợ',
'p' => 'P',
'q' => 'Q',
'r' => 'R',
's' => 'S',
't' => 'T',
'u' => 'U|Ú|Ù|Ủ|Ũ|Ụ|Ư|Ứ|Ừ|Ử|Ữ|Ự|ú|ù|ủ|ũ|ụ|ư|ứ|ừ|ử|ữ|ự',
'v' => 'V',
'w' => 'W',
'x' => 'X',
'y' => 'Y|Ý|Ỳ|Ỷ|Ỹ|Ỵ|ý|ỳ|ỷ|ỹ|ỵ',
'z' => 'Z'
);
foreach($unicode as $nonUnicode=>$uni) $str = preg_replace("/($uni)/i",$nonUnicode,$str);
return $str;
}
Tra loi
chaocacbac 2010-06-04 16:56:05
Tra loi
vietnguyen 2010-06-07 10:21:05
function StripVowelAccent($str,$space_replace = "")
{
$clean = @iconv('UTF-8', 'ASCII//TRANSLIT', $str);
$clean = preg_replace("/[^a-zA-Z0-9\/_|+ -]/", '', $clean);
$clean = strtolower(trim($clean, '-'));
$clean = preg_replace("/[\/_|+ -]+/", $space_replace, $clean);
return $clean;
}
Tra loi
xuanhoa88 2010-06-11 17:56:55
function convert($text = NULL, $type = NULL)
{
switch ($type)
{
case 'upper': $html = mb_convert_case($text, MB_CASE_UPPER, 'utf-8'); break;
case 'title': $html = mb_convert_case($text, MB_CASE_TITLE, 'utf-8'); break;
default: $html = mb_convert_case($text, MB_CASE_LOWER, 'utf-8'); break;
}
return $html;
}
function utf8_to_ascii($str = '')
{
$str_lower = convert($str);
$chars = array
(
'a' => array('a', 'á', 'à', 'ả', 'ạ', 'ã', 'â', 'ấ', 'ầ', 'ẩ', 'ậ', 'ẫ', 'ă', 'ắ', 'ằ', 'ẳ', 'ặ', 'ẵ'),
'b' => array('b'),
'c' => array('c'),
'd' => array('d', 'đ'),
'e' => array('e', 'é', 'è', 'ẻ', 'ẹ', 'ẽ', 'ê', 'ế', 'ề', 'ể', 'ệ', 'ễ'),
'f' => array('f'),
'g' => array('g'),
'h' => array('h'),
'j' => array('j'),
'k' => array('k'),
'l' => array('l'),
'm' => array('m'),
'n' => array('n'),
'i' => array('i', 'í', 'ì', 'ỉ', 'ị', 'ỹ'),
'o' => array('o', 'ó', 'ò', 'ỏ', 'ọ', 'ỡ', 'ơ', 'ớ', 'ờ', 'ở', 'ợ', 'ỡ', 'ô', 'ố', 'ồ', 'ổ', 'ộ', 'ỗ'),
'u' => array('u', 'ú', 'ù', 'ủ', 'ụ', 'ú', 'ư', 'ứ', 'ừ', 'ử', 'ữ', 'ự'),
'y' => array('y', 'ý', 'ỳ', 'ỵ', 'ỷ', 'ỹ'),
'q' => array('q'),
'w' => array('w'),
'r' => array('r'),
't' => array('t'),
'p' => array('p'),
's' => array('s'),
'z' => array('z'),
'x' => array('x'),
'v' => array('v'),
);
foreach ($chars as $k => $v)
{
foreach ($v as $char)
{
$str_lower = str_replace($char, $k, $str_lower);
}
}
$str_lower = preg_replace('/[^a-z0-9\s-.]/i', NULL, $str_lower);
return trim($str_lower);
}
Tra loi
Y kien