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 

<?php 
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')."%'"; 
?>
Bình luận
0