Hello all, imap_sort uses the c-client library to sort messages. This library currently does not support locale-based sort for foreign languages (Although it has charset option). They are working on this(http://www.washington.edu/imap/IMAP-FAQs/#1.12), but you can use the following function which uses strcoll() for locale- based sorting.Pease note that this is required for SUBJECT field sorting, because most of other fields are sorted correctly by imap_sort in any locale:
function imap_locale_sort($stream,$criteria,$reverse,$locale,$options) { if ($criteria!=SORTSUBJECT) return (imap_sort($stream,$criteria,$reverse,$options)); $unsorted = array(); $sortresult = array(); $MC=imap_check($stream); $MN=$MC->Nmsgs; $overview = imap_fetch_overview($stream,"1:$MN",0); $k=0; while( list($key,$val) = each($overview)) { $unsorted[$k]["uid"]=$val->uid; $unsorted[$k]["subject"]=MIME::decode($val->subject, NLS::getCharset()); $k++; } usort ($unsorted, create_function('$a,$b','setlocale (LC_ALL,$locale);return strcoll($a["subject"],$b["subject"]);')); for ($m=0;$m<count($unsorted);$m++) array_push($sortresult,$unsorted[$m]["uid"]); if ($reverse) $sortresult = array_reverse($sortresult); return $sortresult; } Usage example: $sorted = imap_locale_sort($stream,SORTSUBJECT,0,'fa_IR',0); ------------------------------------------------------------- With Thanks and Regards Persian-Horde Team -- PHP Internationalization Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php