根据文件名以正确的顺序加载文件


load files in the right order depending on their names

我有这样的代码:

function endsWith($haystack, $needle) {
  return $needle === "" || (($temp = strlen($haystack) - strlen($needle)) >= 0 && strpos($haystack, $needle, $temp) !== FALSE);
}
function rsearch($folder, $pattern) {
  $dir = new RecursiveDirectoryIterator($folder);
  $ite = new RecursiveIteratorIterator($dir);
  $files = new RegexIterator($ite, $pattern, RegexIterator::GET_MATCH);
  $fileList = array();
  foreach($files as $file) {
    $fileList = array_merge($fileList, $file);
  }
  return $fileList;
}
foreach(rsearch("images/" . $directory . "", "_.*jpg_iU") as $file) {
  if(!endsWith($file, "title.jpg")) {
  echo '<img src="'.$file.'">';
  }
}

是否有可能以某种方式加载.jpg文件取决于他们的名字?我有像IMG_0001, IMG_0002这样的文件名。可以按这个顺序装吗?

看起来好像rsearch返回的数组很简单,所以sort( $arr )rsort( $arr )应该是有用的。您可以使用这两种方法来查看结果并修改代码以合并它们——例如:

$files=rsearch("images/" . $directory . "", "_.*jpg_iU");
sort( $files );
foreach( $files as $file ){
    /* rest of your code*/
}

或者您可以修改您的研究函数,以便在返回结果之前包含搜索....

function rsearch($folder, $pattern) {
  $dir = new RecursiveDirectoryIterator($folder);
  $ite = new RecursiveIteratorIterator($dir);
  $files = new RegexIterator($ite, $pattern, RegexIterator::GET_MATCH);
  $fileList = array();
  foreach($files as $file) {
    $fileList = array_merge($fileList, $file);
  }
  sort( $filelist );
  /* check the manual for the various flags you can set on the sort function */
  return $fileList;
}