En mulig løsning ville være at oprette en anden kolonne i databasen ved siden af "artist", som "artist_normalized". Her kan du, mens du udfylder tabellen, indsætte en "normaliseret" version af strengen. Søgning kan derefter udføres i kolonnen artist_normalized.
En testkode:
<?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";
}
?>
Resultat:
abcd --> abcd
èe --> ee
€ --> €
àòùìéëü --> aouieeu
àòùìéëü --> aouieeu
tiësto --> tiesto
Magien udføres af Transliterator-klassen. Den angivne regel udfører tre handlinger:dekomponerer strengen, fjerner diakritiske tegn og omkomponerer derefter strengen, kanoniseret. Transliterator i PHP er bygget oven på ICU, så ved at gøre dette stoler du på tabellerne i ICU-biblioteket, som er komplette og pålidelige.
Bemærk:denne løsning kræver PHP 5.4 eller nyere med intl udvidelse.