Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

sort array with special characters in php

I have an array I'm trying to asort using php. The problem is that the array has accented characters in it and needs to be sorted using "french" rules.

 cote < côte < coté < côté

I've tried many things, like using php collators, but I get the following error :

PHP Fatal error:  Class 'Collator' not found

I've also tried to set locale but it didn't do anything so I'm not sure I was doing it right, or if I need to isntall the locale. I'm a little confused.

I'm using PHP 5.2.4 if that helps. If I use asort without anything, it puts all the words with accented characters at the end.

Thanks.

like image 908
Enkay Avatar asked Dec 12 '22 21:12

Enkay


2 Answers

I ended up installing the French language pack to my server and using the following :

setlocale(LC_COLLATE, 'fr_CA.utf8');
asort($array, SORT_LOCALE_STRING);

Works for my needs...

like image 180
Enkay Avatar answered Dec 25 '22 23:12

Enkay


The Collator class is part of PHP's internationalization extension, which comes standard with PHP 5.3

Since you have 5.2.4 you'll need to install this extension in order to make use of its classes.

like image 25
Peter Bailey Avatar answered Dec 26 '22 01:12

Peter Bailey