10/10/2018, 10:07
Cần Pro xử lý dấu tiếng Việt trong PHP giúp đỡ
Em đang cần so sánh các chuỗi có dạng sau :
J.K. Rowling b&# 7883; c& aacute;o bu&# 7897;c &# 273;&# 7841;o v&# 259;n
J.K. Rowling bị cáo buộc đạo văn
J.K. Rowling bi cao buoc dao van
Thực tế là 3 chuỗi này có nghĩa giống nhau và em muốn hàm xử lý so sánh sẽ cho kết quả là 3 chuỗi này bằng nhau .
Với chuỗi thứ 2 và thứ 3 ta có thể áp dụng cách bỏ dấu tiếng Việt cả 2 chuỗi ( thay thế kí tự á->a , ị->i , ... ) rồi so sánh .
Nhưng với chuỗi thứ 1 thì em ko nghĩ ra cách gì cả . Mong các pro hướng dẫn giúp em . Em xin chân thành cảm ơn .
J.K. Rowling b&# 7883; c& aacute;o bu&# 7897;c &# 273;&# 7841;o v&# 259;n
J.K. Rowling bị cáo buộc đạo văn
J.K. Rowling bi cao buoc dao van
Thực tế là 3 chuỗi này có nghĩa giống nhau và em muốn hàm xử lý so sánh sẽ cho kết quả là 3 chuỗi này bằng nhau .
Với chuỗi thứ 2 và thứ 3 ta có thể áp dụng cách bỏ dấu tiếng Việt cả 2 chuỗi ( thay thế kí tự á->a , ị->i , ... ) rồi so sánh .
Nhưng với chuỗi thứ 1 thì em ko nghĩ ra cách gì cả . Mong các pro hướng dẫn giúp em . Em xin chân thành cảm ơn .
Bài liên quan





http://code.google.com/p/spica/sourc...ilterUtils.php
<?php //source bkascript.com function convert_to_ascii($str, $all = TRUE) { if (preg_match_all('/\&#(\d+)\;/', $str, $matches)) { for ($i = 0, $s = count($matches['0']); $i < $s; $i++) { $digits = $matches['1'][$i]; $out = ''; if ($digits < 128) { $out .= chr($digits); } elseif ($digits < 2048) { $out .= chr(192 + (($digits - ($digits % 64)) / 64)); $out .= chr(128 + ($digits % 64)); } else { $out .= chr(224 + (($digits - ($digits % 4096)) / 4096)); $out .= chr(128 + ((($digits % 4096) - ($digits % 64)) / 64)); $out .= chr(128 + ($digits % 64)); } $str = str_replace($matches['0'][$i], $out, $str); } } if ($all) { $str = str_replace(array("&", "<", ">", """, "'", "-","á"), array("&","<",">","\"", "'", "-",'á'), $str); } return $str; } echo convert_to_ascii('J.K. Rowling b***7883; cáo bu***7897;c ***273;***7841;o v***259;n'); ?>