10/10/2018, 10:39

Cách tìm kiếm có dâu, không dấu, chữ hoa, chữ thường

Xin chào mọi người,
Mình đang gặp rắc rối ở chỗ tìm kiếm, mình chỉ dùng "LIKE" để tìm kiếm bình thường thôi, nhưng giờ mình muốn khi nhập vào ô tìm kiếm nó tìm tất cả những chuỗi có dấu, không dấu, chữ hoa và chữ thường ra luôn, không biết có cách nào làm được như vậy không, nhờ các bác chỉ giáo.
thuyduongcd viết 12:53 ngày 10/10/2018
Viết 1 hàm lọc hết dấu tiếng Việt. Kết hợp hàm LCASE() của MySQL và strtolower() của PHP.
Code:
$st=strtolower($st);
$chuoikodau=ham_loc_dau($st);
$sql="SELECT * FROM table WHERE LCASE(field) LIKE '%$st%' OR field LIKE '%chuoikodau%'";
honnhienh viết 12:48 ngày 10/10/2018
ham_loc_dau($st);
hàm lọc dấu quan trong nhất bác lại khong cho. hic
thuyduongcd viết 12:56 ngày 10/10/2018
Code:
function ham_loc_dau($st){
$codau=array("à","á","ạ","ả","ã","â","ầ","ấ","ậ","ẩ","ẫ","ă",
"ằ","ắ","ặ","ẳ","ẵ","è","é","ẹ","ẻ","ẽ","ê","ề"
,"ế","ệ","ể","ễ",
"ì","í","ị","ỉ","ĩ",
"ò","ó","ọ","ỏ","õ","ô","ồ","ố","ộ","ổ","ỗ","ơ"
,"ờ","ớ","ợ","ở","ỡ",
"ù","ú","ụ","ủ","ũ","ư","ừ","ứ","ự","ử","ữ",
"ỳ","ý","ỵ","ỷ","ỹ",
"đ",
"À","Á","Ạ","Ả","Ã","Â","Ầ","Ấ","Ậ","Ẩ","Ẫ","Ă"
,"Ằ","Ắ","Ặ","Ẳ","Ẵ",
"È","É","Ẹ","Ẻ","Ẽ","Ê","Ề","Ế","Ệ","Ể","Ễ",
"Ì","Í","Ị","Ỉ","Ĩ",
"Ò","Ó","Ọ","Ỏ","Õ","Ô","Ồ","Ố","Ộ","Ổ","Ỗ","Ơ"
,"Ờ","Ớ","Ợ","Ở","Ỡ",
"Ù","Ú","Ụ","Ủ","Ũ","Ư","Ừ","Ứ","Ự","Ử","Ữ",
"Ỳ","Ý","Ỵ","Ỷ","Ỹ",
"Đ"," ");

$khongdau=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","_");
return str_replace($codau,$khongdau,$st);
}
jdkhang viết 12:55 ngày 10/10/2018
Được gửi bởi gia_cat_luong
Xin chào mọi người,
Mình đang gặp rắc rối ở chỗ tìm kiếm, mình chỉ dùng "LIKE" để tìm kiếm bình thường thôi, nhưng giờ mình muốn khi nhập vào ô tìm kiếm nó tìm tất cả những chuỗi có dấu, không dấu, chữ hoa và chữ thường ra luôn, không biết có cách nào làm được như vậy không, nhờ các bác chỉ giáo.
Bạn set Collation trong CSDL là gì vậy?

Mình làm CSDL hay đặt Collation là utf8_general_ci thì tìm kiếm tiếng Việt bình thường mà.

Keyword mình giữ nguyên, không dùng các hàm kiểu như ham_loc_dau(),...

Dù mình nhập keyword là tiếng việt có dấu hay không dấu thì kết quả trả về nếu có đều là: Kết quả tiếng việt có dấu, không dấu, chữ hoa, chữ thường đều ra hết. Chỉ bị mỗi trường hợp keyword có ký tự đầu tiên là "đ" thì không ra, lúc này mình chỉ xử lý ngoại lệ trường hợp ký tự đầu tiên là "đ" thôi.
haicop viết 12:46 ngày 10/10/2018
Dùng PHP tạo 1 table đã gọt hết dấu, chỉ phục vụ cho việc tìm kiếm. Mình làm cách đó mới khác phục đc.
honnhienh viết 12:48 ngày 10/10/2018
cách bac jdkhang có lỗi chứ "đ" chưa tưng thử nay mwois biết cám ơn bác cái lỗi này.

@haicop bác nói ró hơn chút được hog . thank bác trước
Bài liên quan
0