Een mogelijke oplossing zou zijn om een andere kolom in de database aan te maken naast "artist", zoals "artist_normalized". Hier kunt u, terwijl u de tabel vult, een "genormaliseerde" versie van de tekenreeks invoegen. Er kan vervolgens worden gezocht in de kolom artist_normalized.
Een testcode:
<?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";
}
?>
Resultaat:
abcd --> abcd
èe --> ee
€ --> €
àòùìéëü --> aouieeu
àòùìéëü --> aouieeu
tiësto --> tiesto
De magie wordt gedaan door de Transliterator-klasse. De opgegeven regel voert drie acties uit:ontleedt de tekenreeks, verwijdert diakritische tekens en stelt vervolgens de tekenreeks opnieuw samen, gecanoniseerd. Transliterator in PHP is bovenop ICU gebouwd, dus door dit te doen vertrouwt u op de tabellen van de ICU-bibliotheek, die compleet zijn en betrouwbaar.
Opmerking:deze oplossing vereist PHP 5.4 of hoger met de intl extensie.