fork(4) download
  1. <?php
  2.  
  3. // Cómo ordenar alfabéticamente palabras con acentos en un array
  4. // http://es.stackoverflow.com/q/476/127
  5.  
  6. function ordenar_alfabeticamente(&$palabras) {
  7. if (class_exists('\Collator')) {
  8. // UCA (Algoritmo de Ordenación Alfabética de Unicode)
  9. // Requiere la clase Collator de php-intl
  10. // http://p...content-available-to-author-only...p.net/manual/es/class.collator.php
  11.  
  12. $collator = collator_create( 'es_ES.utf8', 'es_ES.UTF-8',
  13. 'Spanish_Modern_Sort', 'es', 'en_US.utf8', 'en' );
  14. return $collator->sort($palabras);
  15. } else {
  16. // Intenta setear un localismo para usar sort()
  17.  
  18. setlocale(LC_COLLATE, 'es_ES.utf8', 'es_ES.UTF-8',
  19. 'Spanish_Modern_Sort', 'es', 'en_US.utf8', 'en');
  20. return sort($palabras, SORT_LOCALE_STRING);
  21. }
  22. }
  23.  
  24.  
  25. //EJEMPLO
  26. $prueba = array(
  27. 'así',
  28. 'Alfabeto',
  29. 'alfabético',
  30. 'Año',
  31. );
  32.  
  33. ordenar_alfabeticamente($prueba);
  34.  
  35. var_export($prueba);
  36.  
  37. ?>
Success #stdin #stdout 0.03s 52480KB
stdin
Standard input is empty
stdout
array (
  0 => 'alfabético',
  1 => 'Alfabeto',
  2 => 'Año',
  3 => 'así',
)