在自然语言和不区分大小写PHP函数natcasesort
字符进行排序。问题是,如果你的阵列使用URL编码的字符。在这些情况下,编码(%NN,就像%E4)字符的字母“a”之前,尽管预计在这种情况下,字母“Z”后进行排序分类。
我们的代码是这样的:
/* set internal character encoding as on page */
mb_internal_encoding("ISO-8859-1");
ob_start("mb_output_handler");
...
$dir_array[] = "<a href=\"$webdirname/$file_url\"target=_blank>$file_date</a>";
...
function put_array_vertical($input, $size, $sortByname = true, $size_is_horizontal = true, $rowSize = 740)
{
...
natcasesort($input);
...
}
?>
<td width="100%" valign="top" class="mfo-link">
<?=put_array_vertical($dir_array, $inColumns, true, true, 740)?>
</td>
有没有解决这个问题没有简单的方法?
字符集有望成为ISO-8859-1在所有地方。必须指定在PHP脚本,因为它在以后的版本默认为UTF-8。
您可以定义自己的排序程序:
usort ($input , function($a, $b) { return natstrcmp(urldecode($a), urldecode($b)) });