Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

176
Vistas
¿Ordenando la matriz de PHP con la configuración regional?

¿Es posible ordenar una matriz de PHP con una configuración regional?

Esta es la configuración:

Estoy haciendo una lista ordenada interactiva en PHP. Mediante la entrada del usuario, se puede hacer que una de varias categorías (columnas) dirija la clasificación (nombre, residencia, etc.). Esto lo resolví usando la función array_multisort() .

Siguiente obstáculo. La lista está en sueco y el usuario esperará un orden alfabético en sueco: abcdefghijklmnopqrstuvxyzåäö. En este momento, el intérprete clasifica åäö como no alfabéticos y los coloca antes de "a". ¿Cómo remediar?

Encontré información dispersa sobre una setlocale(LC_COLLATE, "sv_SV") , pero las críticas no fueron muy favorables y no logré comprender cómo podría usarse con array_multisort() . ¿Puede? y si es así, ¿cómo? ¿Hay otra forma dentro de php?

La cuestión es que debe haber alguna manera: abundan los sitios web suecos en los que se aplica el orden de clasificación sueco. se puede hacer con php?

about 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Utilice collator_sort o collator_asort .

 // sorting properly accented "Č" in Czech language (should come after "C" and before "D") // 1) Simple sort: $array = ['bca', 'čaz', 'cba', 'abc', 'daz']; $collator = collator_create('cs-CZ'); collator_sort($collator, $array); // result: // ['abc', 'bca', 'cba', 'čaz', 'daz'] // 2) Maintain index assotiations: $array = [ 'x' => 'Česko', 'y' => 'Dänmark', 'z' => 'Brunei', 'w' => 'Cyprus' ]; $coll = collator_create('sk'); // set Slovak locale (or sk-SK) collator_asort($coll, $array); /* result: $array = [ 'z' => 'Brunei', 'w' => 'Cyprus', 'x' => 'Česko', 'y' => 'Dänmark', ]; */
about 4 years ago · Santiago Trujillo Denunciar

0

Utilice SORT_LOCALE_STRING como tercer parámetro de la función array_multisort() . Los documentos de PHP dicen:

SORT_LOCALE_STRING: compara elementos como cadenas, según la configuración regional actual. Utiliza la configuración regional, que se puede cambiar usando setlocale()

ejemplo:

 $result=array_multisort( $input_array, SORT_ASC, SORT_LOCALE_STRING);
about 4 years ago · Santiago Trujillo Denunciar

0

Lo siento. Este no era el problema que pensaba que era. El texto escrito en mi código se ordena correctamente (solo que ä se ordena incorrectamente antes de å, pero eso parece un error en las especificaciones (?)).

De todos modos, el problema es obviamente con la codificación de caracteres. Es cuando el texto se obtiene de una base de datos de Contact Form 7 (complemento de WordPress) que surge el problema. Presumiblemente tiene otra codificación y necesita conversión.

Gracias de cualquier manera.

about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda