Una possibile soluzione sarebbe creare un'altra colonna nel database accanto a "artista", come "artista_normalizzato". Qui, mentre si popola la tabella, è possibile inserire una versione "normalizzata" della stringa. La ricerca può quindi essere eseguita sulla colonna artist_normalized.
Un codice di prova:
<?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";
}
?>
Risultato:
abcd --> abcd
èe --> ee
€ --> €
àòùìéëü --> aouieeu
àòùìéëü --> aouieeu
tiësto --> tiesto
La magia è fatta dalla classe Transliterator. La regola specificata esegue tre azioni:scompone la stringa, rimuove i segni diacritici e quindi ricompone la stringa, canonicalized.Transliterator in PHP è basato su ICU, quindi in questo modo ti affidi alle tabelle della libreria ICU, che sono complete e affidabile.
Nota:questa soluzione richiede PHP 5.4 o superiore con intl estensione.