awssat / numbered-string-order
Sort a string array based on the included numbers naturally.
1.0.9
2019-07-15 11:29 UTC
Requires
- php: ~7.0
Requires (Dev)
- phpunit/phpunit: ^6.4
README
Sort an array of strings based on the included numbers naturally. An alternative to PHP built-in natsort function that's actually work.
Install
Via Composer
$ composer require awssat/numbered-string-order
Usage
Sort
//if you are using laravel, then instead use: //$numberedStringOrder = app(Awssat\numberedStringOrder\numberedStringOrder::class); $numberedStringOrder = new numberedStringOrder(); $numberedStringOrder->sort([ 'episode 5', 'episode50', '499', 'episode1', 'episode two hundred', 'episode one', 'episode two', 'episode eleven', 'episode three' ]); >> output: [ "episode1", "episode one", "episode two", "episode three", "episode 5", "episode eleven", "episode50", "episode two hundred", 499, ]
If you ask why not use the built-in function (natsort), then see the natsort output of the same example above to know why:
//output of built-in function natsor(): 🤨 [ "499", "episode1", "episode 5", "episode50", "episode eleven", "episode one", "episode three", "episode two", "episode two hundred", ]
Get the numbers
If you want to use our internal numbers extracting method
$numberedStringOrder->getNumbers(['2digits', 'text1', 'three3', 'two cars', 'blank']); >> output: [ "2digits" => 2, "text1" => "1", "three3" => "3", "two cars" => 2, "blank" => "blank", ]
Convert words to numbers
This package can also be helpful if you want to convert numerical words to numbers
new numberedStringOrder(); $numberedStringOrder->englishWordsToNumbers('one hundred twenty-three thousand four hundred fifty-six'); >> output: 123456 //to get arabic words to number use: arabicWordsToNumbers(...)
Test
composer test
Currently, it supports English and Arabic.
License
The MIT License (MIT). Please see License File for more information.