J'ai un script PHP qui crée une vignette et liste une galerie d'images. Le problème que j'ai est qu'il le liste par horodatage sur le serveur mais je veux qu'il liste 'naturellement'.PHP: Tri du tableau avec natsort
<?php
# SETTINGS
$max_width = 100;
$max_height = 100;
$per_page = 24;
$page = $_GET['page'];
$has_previous = false;
$has_next = false;
function getPictures() {
global $page, $per_page, $has_previous, $has_next;
if ($handle = opendir(".")) {
$lightbox = rand();
echo '<ul id="pictures">';
$count = 0;
$skip = $page * $per_page;
if ($skip != 0)
$has_previous = true;
while ($count < $skip && ($file = readdir($handle)) !== false) {
if (!is_dir($file) && ($type = getPictureType($file)) != '')
$count++;
}
$count = 0;
while ($count < $per_page && ($file = readdir($handle)) !== false) {
if (!is_dir($file) && ($type = getPictureType($file)) != '') {
if (! is_dir('thumbs')) {
mkdir('thumbs');
}
if (! file_exists('thumbs/'.$file)) {
makeThumb($file, $type);
}
echo '<li><a href="'.$file.'" class="zoom" rel="group">';
echo '<img src="thumbs/'.$file.'" alt="" />';
echo '</a></li>';
$count++;
}
}
echo '</ul>';
while (($file = readdir($handle)) !== false) {
if (!is_dir($file) && ($type = getPictureType($file)) != '') {
$has_next = true;
break;
}
}
}
}
function getPictureType($file) {
$split = explode('.', $file);
$ext = $split[count($split) - 1];
if (preg_match('/jpg|jpeg/i', $ext)) {
return 'jpg';
} else if (preg_match('/png/i', $ext)) {
return 'png';
} else if (preg_match('/gif/i', $ext)) {
return 'gif';
} else {
return '';
}
}
function makeThumb($file, $type) {
global $max_width, $max_height;
if ($type == 'jpg') {
$src = imagecreatefromjpeg($file);
} else if ($type == 'png') {
$src = imagecreatefrompng($file);
} else if ($type == 'gif') {
$src = imagecreatefromgif($file);
}
if (($oldW = imagesx($src)) < ($oldH = imagesy($src))) {
$newW = $oldW * ($max_width/$oldH);
$newH = $max_height;
} else {
$newW = $max_width;
$newH = $oldH * ($max_height/$oldW);
}
$new = imagecreatetruecolor($newW, $newH);
imagecopyresampled($new, $src, 0, 0, 0, 0, $newW, $newH, $oldW, $oldH);
if ($type == 'jpg') {
imagejpeg($new, 'thumbs/'.$file);
} else if ($type == 'png') {
imagepng($new, 'thumbs/'.$file);
} else if ($type == 'gif') {
imagegif($new, 'thumbs/'.$file);
}
imagedestroy($new);
imagedestroy($src);
}
?>
Que dans le monde ce que cela signifie pour trier quelque chose « naturellement »? – thedz
@thedz: Comme un humain le ferait. http://php.net/natsort – hobodave
@hobodave: ah, intéressant. Je ne le savais pas. Merci! – thedz