Mysql
 sql >> Datenbank >  >> RDS >> Mysql

mySQL - Anpassung der lateinischen (englischen) Formulareingabe an utf8-Daten (nicht englisch).

Eine mögliche Lösung wäre das Erstellen einer weiteren Spalte in der Datenbank neben "Künstler", z. B. "Künstler_normalisiert". Hier könnten Sie beim Füllen der Tabelle eine "normalisierte" Version der Zeichenfolge einfügen. Die Suche kann dann anhand der Spalte artist_normalized durchgeführt werden.

Ein 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";
}
?>

Ergebnis:

abcd --> abcd
èe --> ee
€ --> €
àòùìéëü --> aouieeu
àòùìéëü --> aouieeu
tiësto --> tiesto

Die Magie wird von der Transliterator-Klasse ausgeführt. Die angegebene Regel führt drei Aktionen aus:zerlegt den String, entfernt diakritische Zeichen und setzt den String dann kanonisiert neu zusammen. Der Transliterator in PHP baut auf ICU auf, also verlassen Sie sich dabei auf die Tabellen der ICU-Bibliothek, die vollständig sind und zuverlässig.

Hinweis:Diese Lösung erfordert PHP 5.4 oder höher mit intl Erweiterung.