Một giải pháp khả thi là tạo một cột khác trong cơ sở dữ liệu bên cạnh "artist", chẳng hạn như "artist_normalized". Tại đây, trong khi điền bảng, bạn có thể chèn phiên bản "chuẩn hóa" của chuỗi. Sau đó, tìm kiếm có thể được thực hiện đối với cột artist_normalized.
Mã thử nghiệm:
<?php
$transliterator = Transliterator::createFromRules(':: NFD; :: [:Nonspacing Mark:] Remove; :: NFC;', Transliterator::FORWARD);
$test = ['abcd', 'èe', '€', 'àòùìéëü', 'àòùìéëü', 'tiësto'];
foreach($test as $e) {
$normalized = $transliterator->transliterate($e);
echo $e. ' --> '.$normalized."\n";
}
?>
Kết quả:
abcd --> abcd
èe --> ee
€ --> €
àòùìéëü --> aouieeu
àòùìéëü --> aouieeu
tiësto --> tiesto
Phép thuật được thực hiện bởi lớp Transliterator. Quy tắc được chỉ định thực hiện ba hành động:phân rã chuỗi, loại bỏ dấu phụ và sau đó biên dịch lại chuỗi, được chuẩn hóa. và đáng tin cậy.
Lưu ý:giải pháp này yêu cầu PHP 5.4 trở lên với intl phần mở rộng.