PHP readdir и сортировка

Я делаю небольшую галерею. Я хочу прочитать имена файлов из каталога и распечатать имена файлов ниже, после того как я разделил некоторые ведущие цифры и расширения файлов.

У меня две версии кода.

Версия 1 не сортирует

$current_dir = "$DOCUMENT_ROOT"."/weddings2/"; $dir = opendir($current_dir); // Open the sucker while ($file = readdir($dir)) // while loop { $parts = explode(".", $file); // pull apart the name and dissect by period if (is_array($parts) && count($parts) > 1) { // does the dissected array have more than one part $extension = end($parts); // set to we can see last file extension $bfile= substr($file, 2); //strips the first two characters $cfile= preg_replace(('/\d/'),'&nbsp;',$bfile);//remove numbers $cfile= preg_replace(('/_/'),' ',$cfile); $cfile= preg_replace(('/.jpg/'),' ',$cfile); if ($extension == "jpg" OR $extension == "JPG") // is extension ext or EXT ? echo "<td><img src=\"weddings2/$file\"><br />$cfile</td>\n"; } } closedir($dir); // Close the directory after we are done 

Версия 2 сортируется, но я не могу манипулировать именами файлов

 $current_dir = "$DOCUMENT_ROOT"."/weddings2/"; $dir = opendir($current_dir); // Open the sucker $files = array(); while ($files[] = readdir($dir)); sort($files); closedir($dir); foreach ($files as $file) if ($file <> "." && $file <> ".." && !preg_match("/^hide/i",$file)) $table_cell .= "<td><img src='".'weddings2/'. rawurlencode($file) ."'><br />$cfile</td>\n"; echo $table_cell; 

Да, я знаю, что я тупой. Arghhh!

EDIT: в вашем коде отсутствуют скобки

У тебя есть

 для каждого (...)
       код
       код

и это должно быть

 для каждого (...) {
       код
       код
 }

Просто поставьте код между $ parts и последним $ cfile после цикла foreach, просто добавьте фигурные скобки в цикле, чтобы вы могли добавить больше кода. Также обратите внимание, что у вас разные условия в обоих фрагментах кода, вы должны решить, какой одно использование или если их объединить в одно условие.

 $current_dir = "$DOCUMENT_ROOT"."/weddings2/"; $dir = opendir($current_dir); // Open the sucker $files = array(); while ($files[] = readdir($dir)); sort($files); closedir($dir); foreach ($files as $file) { //MANIPULATE FILENAME HERE, YOU HAVE $file... if ($file <> "." && $file <> ".." && !preg_match("/^hide/i",$file)) echo "<td><img src='".'weddings2/'. rawurlencode($file) ."'><br />$cfile</td>\n"; } 

Поскольку в разделе комментариев не хватает места …

Vinko: Я редактирую здесь, чтобы сделать его проще. Вы должны иметь

  $current_dir = "$DOCUMENT_ROOT"."/weddings2/"; $dir = opendir($current_dir); // Open the sucker $files = array(); while ($files[] = readdir($dir)); sort($files); closedir($dir); foreach ($files as $file) { $bfile= substr($file, 2); //strips the first two characters $cfile= preg_replace(('/\d/'),'&nbsp;',$bfile); $cfile= preg_replace(('/_/'),' ',$cfile); $cfile= preg_replace(('/.jpg/'),' ',$cfile); if ($file <> "." && $file <> ".." && !preg_match("/^hide/i",$file)) // echo "<td><img src=\"weddings2/$file\"><br />$cfile</td>\n"; //echo "<td><img src=\"weddings2/$file\"><br />$cfile</td>\n"; $table_cell .= "<td><img src='".'weddings2/'. rawurlencode($file) ."'><br />$cfile</td>\n"; //$table_cell .= " <li><a href='" .'pdfs/'. rawurlencode($file) ."'>$file</a></li>\n"; echo $table_cell; } 

вместо того, что вы пробовали

Я попробовал это:

  $current_dir = "$DOCUMENT_ROOT"."/weddings2/"; $dir = opendir($current_dir); // Open the sucker $files = array(); while ($files[] = readdir($dir)); sort($files); closedir($dir); foreach ($files as $file) $bfile= substr($file, 2); //strips the first two characters $cfile= preg_replace(('/\d/'),'&nbsp;',$bfile); $cfile= preg_replace(('/_/'),' ',$cfile); $cfile= preg_replace(('/.jpg/'),' ',$cfile); if ($file <> "." && $file <> ".." && !preg_match("/^hide/i",$file)) // echo "<td><img src=\"weddings2/$file\"><br />$cfile</td>\n"; //echo "<td><img src=\"weddings2/$file\"><br />$cfile</td>\n"; $table_cell .= "<td><img src='".'weddings2/'. rawurlencode($file) ."'><br />$cfile</td>\n"; //$table_cell .= " <li><a href='" .'pdfs/'. rawurlencode($file) ."'>$file</a></li>\n"; echo $table_cell; 

И получил это

 <pre> <td><img src='weddings2/36%20And%20they%20lived%20happily%20ever%20after.jpg'><br /> And they lived happily ever after </td></pre> 

Вместо этого:

 <pre> <td><img src="weddings2/05Wedding_Chapel.jpg"><br />Wedding Chapel </td> <td><img src="weddings2/06Bride_Flowers.jpg"><br />Bride Flowers </td> <td><img src="weddings2/09%20Bridemaids%20on%20the%20lawn.jpg"><br /> Bridemaids on the lawn </td> <td><img src='weddings2/36%20And%20they%20lived%20happily%20ever%20after.jpg'><br /> And they lived happily ever after </td> </pre>