Open htonkovac opened 8 years ago
Pozdrav, treba prouciti:
http://php.net/manual/en/function.setlocale.php http://php.net/manual/en/function.sort.php http://php.net/manual/en/function.strcoll.php
Ovako nekako ide na Linuxu (live serverima):
$arrayToSort = [
'Čokadinci',
'Šibenik',
'Bilje',
'Zagreb'
];
setlocale(LC_COLLATE, 'hr_HR.utf8');
sort($arrayToSort, SORT_LOCALE_STRING);
echo '<pre>';
var_dump($arrayToSort);
// usort($arrayToSort, 'strcoll'); //metoda 2
Na Linuxu se dotupni locale-i mogu naci sa $ locale -a
konzolskom naredbom.
Iskreno, ne znam iz glave koji locale treba staviti na Windowsima jer nije isto, isprobam malo kasnije, nemam sad win masinu. Ako netko skonta neka pliz napise ovdje :)
Vidim da manual navodi:
On Windows, setlocale(LC_ALL, '') sets the locale names from the system's regional/language settings (accessible via Control Panel).
Naravno, moguce je i napraviti custom sorting za hr sa usort-om i slicnima, pa se mozete igrati i s tim.
Pozz, Ivan
Oke, nakon malo proucavanja i testiranja, cini mi se da je ovo bolja i modernija varijanta: http://php.net/manual/en/collator.sort.php
$arrayToSort = [
'Čokadinci',
'Šibenik',
'Bilje',
'Zagreb'
];
$collator = collator_create('hr_HR');
collator_sort($collator, $arrayToSort);
var_export($arrayToSort);
Da bi ovo radilo, potrebno je da je u php-u upaljena intl ekstenzija koja sluzi za razne locale/jezicne manipulacije. intl je danas standard i skoro svi serveri ga imaju, ali zna biti da po defaultu nije upaljen u wampu/xamppu i slicnima.
Ako je ugasen, pali se tako da editirate php.ini (glavni php konfig fajl), odkomentirate liniju ;extension=php_intl.dll i restartate server. phpinfo() vam moze pokazati gdje vam se nalazi ucitani php.ini na windowsima.
http://stackoverflow.com/questions/33869521/how-can-i-enable-php-extension-intl
Hvala, ovo radi !
PHP-ova funkcija sort() sve "non-ascii" znakove stavlja na kraj.