Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

mySQL - pencocokan input formulir latin (bahasa Inggris) ke data utf8 (non-Inggris)

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.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara mengatur waktu eksekusi maksimum untuk kueri mysql?

  2. MySQL dan Periksa Batasan

  3. mysqli_connect():(HY000/2002):Tidak dapat terhubung ke server MySQL lokal melalui soket

  4. Perl DBI fetchall_hashref

  5. MySQL:Menggunakan DATETIME sebagai kunci utama