0

我有这个排序功能,它扫描目录并列出所有jpg文件,我怎样才能让它只jpg对文件名与指定关键字匹配的文件进行排序,例如查找和排序jpg名称中包含关键字的所有文件"toys"

   $a_img[] = array(); // return values
$keyword = "toys"; // your keyword
$allowed_types = array('jpg'); // list of filetypes you want to show  
 $dimg = opendir($imgdir);  
 while($imgfile = readdir($dimg)) {
     // check to see if filename contains keyword
    if(false!==strpos($keyword, $imgfile)){
       //check file extension
        $extension = strtolower(substr($imgfile, strrpos($imgfile, ".")+1));
        if (in_array($extension, $allowed_types)) {
        // add file to your array
        $a_img[] = $imgfile;
        }
    }   
}
// sort alphabetically by filename
sort($a_img);


   $totimg = count($a_img); // total image number  
   for($x=0; $x < $totimg; $x++)  
       { 

    $size = getimagesize($imgdir.'/'.$a_img[$x]);  
   // do whatever  

   echo $a_img[$x];  

  }
4

3 回答 3

0

strpos()您可能希望使用- http://php.net/manual/en/function.strrpos.php检查文件名是否出现关键字- 并且只将这些文件添加到您的数组中。假设您想按文件名的字母顺序排序,您可以使用sort()函数对这个数组进行排序 - http://php.net/manual/en/function.sort.php

使用时请strpos()务必测试!==false文件名开头的关键字(例如“toys_picture.jpg”)是否会返回0,这是错误的,但不是错误的。

您还可以使用strrpos()- http://www.php.net/manual/en/function.strrpos.php - 查找文件名中最后出现的 a.并将其用于substr()支持 3 和 4 个字符的文件扩展名(例如“jpg”和“jpeg”)。

$imgdir = "idximages"; // directory
$keyword = "toys"; // your keyword
$allowed_types = array('jpg'); // list of filetypes you want to show  
$a_img = array(); // return values
$dimg = opendir($imgdir);  
while($imgfile = readdir($dimg)) {
    // check to see if filename contains keyword
    if(false!==strpos($imgfile, $keyword)){
        //check file extension
        $extension = strtolower(substr($imgfile, strrpos($imgfile, ".")+1));
        if (in_array($extension, $allowed_types)) {
            // add file to your array
            $a_img[] = $imgfile;
        }
    }   
}
// sort alphabetically by filename
sort($a_img);

// iterate through filenames
foreach ($a_img as $file){
    $imagesize = getimagesize($imgdir.'/'.$file);
    print_r($imagesize);
    list($width, $height, $type, $attr) = $imagesize;
}
于 2012-10-25T00:00:50.350 回答
0

用于strrpos检查另一个字符串中是否存在子字符串

http://php.net/manual/en/function.strrpos.php

查看该页面上的示例,如果它不存在,您应该能够匹配toys并从您的数组中排除它

于 2012-10-25T00:01:25.373 回答
0

也许我错过了一些东西,但在你说“是的,它是 JPG”之后,你会做类似的事情:

if(strstr($imgfile, 'toys'))
{
  //carry on
}
于 2012-10-25T00:02:33.703 回答