[pmwiki-users] pagelist sort using locale

Rogutės Sparnuotos rogutes at googlemail.com
Fri Feb 6 07:15:49 CST 2009


Christophe David (2009-02-06 10:42):
> When sorting pagelists, for example  with the option  "order=title",
> the sort does not take in account locale settiings.
> 
> This causes the french accented 'a'  ('à' or 'â' ) to be  listed after 'z'.
> 
> The PHP sort function allows a second parameter (bool sort  ( array
> &$array  [, int $sort_flags=SORT_REGULAR  ] )) which can be set to
> SORT_LOCALE_STRING.
> 
> Is there a way to tell PmWiki to use this mode when sorting, without
> programming  a dedicated function (CustomPagelistSortOrder) ?

Currently, pagelist ordering seems to be determined by doing a case
insensitive comparison of strings with the PHP function strcasecmp().
This function doesn't really work out of ASCII, but PHP manual says it
is binary safe (I guess this means that it is safe to use with
differently encoded strings).

On the other hand, PHP has a strcoll() function, which is able to do
locale based string comparison, but it is not binary safe and is case
sensitive.

So, if you're already using UTF-8, there should be no problems with the
following line. But if you're not, problems might arise later on
(but don't take my words for granted - I am not well versed in this
encoding stuff).

Also, you are supposed to loose case insensitivity with this, but
I didn't.

$PageListSortCmp['title'] = "strcoll(\$PCache[\$x]['title'],\$PCache[\$y]['title']);";

-- 
--  Rogutės Sparnuotos



More information about the pmwiki-users mailing list