Skip to content

Instantly share code, notes, and snippets.

@lelotnk
Created August 28, 2015 18:56
Show Gist options
  • Save lelotnk/dc739378e7416fbb5d90 to your computer and use it in GitHub Desktop.
Save lelotnk/dc739378e7416fbb5d90 to your computer and use it in GitHub Desktop.
PHP Natsort
<?php
$array = array(
'/dir/arquivo-01.jpg',
'/dir/arquivo-02.jpg',
'/dir/arquivo-03.jpg',
'/dir/arquivo-04.jpg',
'/dir/arquivo-05.jpg',
'/dir/arquivo-06.jpg',
'/dir/arquivo-07.jpg',
'/dir/arquivo-08.jpg',
'/dir/arquivo-09.jpg',
'/dir/arquivo-010.jpg',
'/dir/arquivo-011.jpg',
'/dir/arquivo-012.jpg',
'/dir/arquivo-013.jpg',
'/dir/arquivo-014.jpg',
'/dir/arquivo-015.jpg',
'/dir/arquivo-016.jpg',
'/dir/arquivo-017.jpg',
'/dir/arquivo-018.jpg',
'/dir/arquivo-019.jpg',
'/dir/arquivo-020.jpg',
'/dir/arquivo-021.jpg',
'/dir/arquivo-022.jpg',
);
shuffle($array);
echo "<pre>";
echo "Array de teste:" . PHP_EOL;
print_r($array);
echo "</pre>";
natsort($array);
echo "<pre>";
echo "Natsort padrão:" . PHP_EOL;
print_r($array);
echo "</pre>";
usort($array,function($a, $b) {
$pathInfoA = pathinfo($a);
$pathInfoB = pathinfo($b);
if (preg_match('/([^\d]*)(0)([\d]+)/', $pathInfoA['filename'], $matches)) {
$a = $matches[1] . $matches[3];
} else {
$a = $pathInfoA['filename'];
}
if (preg_match('/([^\d]*)(0)([\d]+)/', $pathInfoB['filename'], $matches)) {
$b = $matches[1] . $matches[3];
} else {
$b = $pathInfoB['filename'];
}
return strnatcmp($a, $b);
});
echo "<pre>";
echo "Custom Natsort:" . PHP_EOL;
print_r($array);
echo "</pre>";
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment