Solusi yang mungkin adalah membuat kolom lain di database di sebelah "artis", seperti "artis_normalisasi". Di sini, saat mengisi tabel, Anda dapat memasukkan versi string yang "dinormalisasi". Pencarian kemudian dapat dilakukan terhadap kolom artis_normalisasi.
Kode uji:
<?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";
}
?>
Hasil:
abcd --> abcd
èe --> ee
€ --> €
àòùìéëü --> aouieeu
àòùìéëü --> aouieeu
tiësto --> tiesto
Keajaiban dilakukan oleh kelas Transliterator. Aturan yang ditentukan melakukan tiga tindakan:menguraikan string, menghapus diakritik dan kemudian mengkomposisi ulang string, dikanonikalisasi.Transliterator di PHP dibangun di atas ICU, jadi dengan melakukan ini Anda mengandalkan tabel perpustakaan ICU, yang lengkap dan dapat diandalkan.
Catatan:solusi ini membutuhkan PHP 5.4 atau lebih tinggi dengan intl ekstensi.