php 自然排序法,php – UCA自然排序

我最近了解到

PHP已经支持

Unicode Collation Algorithm via the intl extension了:

$array = array

(

'al', 'be',

'Alpha', 'Beta',

'Álpha', 'Àlpha', 'Älpha',

'かたかな',

'img10.png', 'img12.png',

'img1.png', 'img2.png',

);

if (extension_loaded('intl') === true)

{

collator_asort(collator_create('root'), $array);

}

Array

(

[0] => al

[2] => Alpha

[4] => Álpha

[5] => Àlpha

[6] => Älpha

[1] => be

[3] => Beta

[11] => img1.png

[9] => img10.png

[8] => img12.png

[10] => img2.png

[7] => かたかな

)

正如您所看到的,即使使用混合大小写字符串,这似乎也能完美运行!到目前为止我遇到的唯一缺点是没有对natural sorting的支持,我想知道解决这个问题的最佳方法是什么,这样我就可以合并两个世界中最好的一个.

我试图指定Collat​​or :: SORT_NUMERIC排序标志,但结果更加混乱:

collator_asort(collator_create('root'), $array, Collator::SORT_NUMERIC);

Array

(

[8] => img12.png

[7] => かたかな

[9] => img10.png

[10] => img2.png

[11] => img1.png

[6] => Älpha

[5] => Àlpha

[1] => be

[2] => Alpha

[3] => Beta

[4] => Álpha

[0] => al

)

但是,如果我只使用img * .png值运行相同的测试,我会得到理想的输出:

Array

(

[3] => img1.png

[2] => img2.png

[1] => img10.png

[0] => img12.png

)

任何人都可以想到一种在添加自然排序功能的同时保留Unicode排序的方法吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值