[TYPO3-UG Denmark] Problem med sortering i PHP
Peter Klein
pmk at io.dk
Sat Feb 6 15:29:01 CET 2010
strcoll() fungerer fint, så med den fik jeg flikket en lille custom sort
funktion sammen, der fungere med natural order og locale.
Her er funktionen hvis der nu er andre der har (eller har haft) samme
problem. ;)
function _natsort_lc($a,$b) {
return is_numeric($a) ? strnatcmp($a,$b) : strcoll($a,$b);
}
Dvs. at en array med disse values:
f, h, 9, å, z, 23, 5, e, 3, æ, u, c, 0, d, j, m, ø, ü, r, a, b
Bliver sorteret som:
0, 3, 5, 9, 23, a, b, c, d, e, f, h, j, m, r, u, ü, z, æ, ø, å
Mvh
Peter Klein / Clio Online
"Peter Klein" <pmk at io.dk> wrote in message
news:mailman.1.1265462333.31437.typo3-ug-denmark at lists.typo3.org...
> Så har jeg fundet løsningen..
>
> I PHP skal man tilføje "SORT_LOCALE_STRING" til sorterings kommandoen.
> Eksempel:
>
> sort($array,SORT_LOCALE_STRING );
>
> Og så SKAL locale_all være sat korrekt op til Dansk sprog.
>
> Desværre virker "SORT_LOCALE_STRING" kun i de simple sorteringsfunktioner,
> men virker f.eks. ikke i "natsort()", "usort()" & "array_multisort()".
> Men det ser ud til at "strcoll()" også sorter efter locale uden det ekstra
> parameter, så den kan man så bruge i custom sort funktioner.
>
> --
> Peter Klein / Clio Online
>
>
> "Peter Klein" <pmk at io.dk> wrote in message
> news:mailman.1.1265318491.15179.typo3-ug-denmark at lists.typo3.org...
>> Jeg sidder og koder på en extension der skal vise nogle records i
>> alfabetisk rækkefølge.
>> Men når jeg sorterer records, så kommer de ud som:
>>
>> abcdefghijklmnopqrstuvwxyzåæø
>>
>> og ikke
>>
>> abcdefghijklmnopqrstuvwxyzæøå
>>
>> (æøå sorteres som åæø)
>>
>> Jeg tror problemet skyldes at den sorter på unicode værdier og ikke efter
>> locale collate værdien, men jeg kan ikke rigtig hitte en løsning.
>> Er der nogen der har været ude for det samme problem, og evt. kender en
>> løsning?
>>
>> --
>> Peter Klein / Clio Online
>>
>>
>>
>>
>>
>>
>
>
More information about the TYPO3-UG-Denmark
mailing list