Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comparer des chaînes en PHP de la même manière que MySQL le fait

La collation n'a rien à voir avec le stockage. Vous devez définir le jeu de caractères pour déterminer l'encodage de stockage. Le classement régit la façon dont la comparaison et le tri doivent se produire. Le classement doit tenir compte du jeu de caractères, mais sinon, il n'a rien à voir avec le jeu de caractères.

Pour répondre à votre question, vous pouvez utiliser iconv pour translitter le texte, puis le comparer. Par exemple :

function compare($s1, $s2) {
  return strcmp(
    iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $s1),
    iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $s2));
}

C'est essentiellement ce que MySql fera pour vous, bien que ce soit probablement plus rapide et qu'il puisse avoir une table de classement légèrement différente de ISO-8859-1//TRANSLIT . Pas tout à fait sûr de cela.

Il serait probablement plus facile d'utiliser la base de données, comme d'autres l'ont déjà suggéré.