02/10/2018, 18:09
Giải quyết vấn đề tìm kiếm có dấu - không dấu
Bài viết này do tôi sưu tầm trên phpbasic giải quyết vấn đề tìm kiếm có dấu - không dấu,có lúc bạn phải cần nó đó 1/Vấn đề thứ nhất,kiểm tra chuổi nhập có dấu hay không dấu 2/Không làm tăng dung lượng database. Đoạn code sau sẽ giải quyết được 2 vấn đề trên -> ...
Bài viết này do tôi sưu tầm trên phpbasic giải quyết vấn đề tìm kiếm có dấu - không dấu,có lúc bạn phải cần nó đó
1/Vấn đề thứ nhất,kiểm tra chuổi nhập có dấu hay không dấu
2/Không làm tăng dung lượng database.
Đoạn code sau sẽ giải quyết được 2 vấn đề trên -> kết quả tìm kiếm khá chính xác
Nhược điểm :
Chạy câu query này đảm bảo sẽ rất nhanh cháy server :d
<?phpBình luận
function stripVietName($str){
if(!$str) return false;
$unicode = array(
'a'=>'á|à|ả|ã|ạ|ă|ắ|ặ|ằ|ẳ|ẵ|â|ấ|ầ|ẩ|ẫ|ậ',
'd'=>'đ',
'e'=>'é|è|ẻ|ẽ|ẹ|ê|ế|ề|ể|ễ|ệ',
'i'=>'í|ì|ỉ|ĩ|ị',
'o'=>'ó|ò|ỏ|õ|ọ|ô|ố|ồ|ổ|ỗ|ộ|ơ|ớ|ờ|ở|ỡ|ợ',
'u'=>'ú|ù|ủ|ũ|ụ|ư|ứ|ừ|ử|ữ|ự',
'y'=>'ý|ỳ|ỷ|ỹ|ỵ',
);
foreach($unicode as $nonUnicode=>$uni)
$str = preg_replace("/($uni)/i",$nonUnicode,$str);
return $str;
}
$query="SELECT * FROM name WHERE LOWER(CONVERT(name USING utf8)) LIKE '%".mb_strtolower($keyword,'utf-8')."%' OR LOWER(CONVERT(name USING utf8)) LIKE '%".mb_strtolower(stripVietName($keyword),'utf-8')."%'";
?>