Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Comparando strings em PHP da mesma forma que o MySQL faz


O agrupamento não tem nada a ver com o armazenamento. Você precisa definir o charset para determinar a codificação de armazenamento. A ordenação governa como a comparação e a classificação devem acontecer. A ordenação deve estar ciente do conjunto de caracteres, mas, caso contrário, não tem nada a ver com o conjunto de caracteres.

Para responder à sua pergunta, você pode usar iconv para traduzir o texto e depois compará-lo. Por exemplo:
function compare($s1, $s2) {
  return strcmp(
    iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $s1),
    iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $s2));
}

Isso é basicamente o que o MySql fará por você, embora provavelmente seja mais rápido e possa ter uma tabela de agrupamento ligeiramente diferente do ISO-8859-1//TRANSLIT . Não tenho certeza disso.

Provavelmente seria mais fácil usar o banco de dados, como outros já sugeriram.