Avatar billede side1 Novice
15. april 2023 - 19:04 Der er 3 kommentarer

Sortere en array med danske specialttegn

Hvis man har en array med et danske specieltegn som f.eks. tegnet æ (æ)

$array = array("apple", "æ", "banana", );

og laver en sortering, føre til denne rækkefølge

æ
apple
banana

Hvor kan man få en korrekt sortering som denne:

apple
banana
æ
Avatar billede arne_v Ekspert
15. april 2023 - 21:45 #1

<?php

$a = array("apple", "&aelig;", "banana", "æ", "ø", "å");

echo "plain:\r\n";
sort($a);
foreach($a as $a1) {
    echo "  $a1\r\n";
}
echo "real:\r\n";
$col = new Collator('da_DK');
usort($a, function($e1,$e2) use($col) { return $col->compare(html_entity_decode($e1), html_entity_decode($e2)); } );
foreach($a as $a1) {
    echo "  $a1\r\n";
}

?>


skriver:

plain:
  &aelig;
  apple
  banana
  å
  æ
  ø
real:
  apple
  banana
  &aelig;
  æ
  ø
  å

Jeg tror at det muligvis kun virker med UTF-8 ikke med ISO-8859-1.
Avatar billede Slettet bruger
16. april 2023 - 12:54 #2
Bare en tillæg for mulige encoding: Karakter med UNICODE følgende muligheder for at benytte:

UTF-8 without BOM
UTF-8 with BOM -> Ikke nødvendigt
UTF-16
28591 Western European (ISO)
12000 UTF-32
10000 Western European (Mac)
1252 Western European
1200 Unicode

-Ja, det er nok bedst som 'Arne' anbefaler. Bedst med UTF-8. Og hvis muligt du har UTF-16, kan også dette benyttes.
Avatar billede Slettet bruger
16. april 2023 - 13:00 #3
UTF står for " Unicode Transformation Format.": Universal

Unicode (eller Universal Coded Character Set) Transformation Format - 8-bit..

🤓🙃
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester