PHP自然不区分大小写的排序URL编码字符串

问题描述 投票:0回答:1

在自然语言和不区分大小写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。

php
1个回答
1
投票

您可以定义自己的排序程序:

usort ($input , function($a, $b) { return natstrcmp(urldecode($a), urldecode($b)) });
© www.soinside.com 2019 - 2024. All rights reserved.