0

ディレクトリをスキャンしてすべてのファイルを一覧表示するこの並べ替え機能があります。たとえば、名前にキーワードが含まれるすべてのファイルを検索して並べ替えるなど、指定したキーワードに一致するファイル名を持つファイルjpgのみを並べ替えるにはどうすればよいでしょうか。jpgjpg"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

http://php.net/manual/en/function.strrpos.phpを使用してキーワードが出現するファイル名を確認し、それらstrpos()のファイルのみを配列に追加します。ファイル名でアルファベット順に並べ替えると仮定すると、関数を使用してこの配列を並べ替えます - http://php.net/manual/en/function.sort.phpsort()

使用する場合は、ファイル名の先頭にあるキーワード (「toys_picture.jpg」など) が返されるstrpos()かどうかを必ずテストしてください。これは偽ではありますが、偽ではありません。!==false0

また、http:strrpos() //www.php.net/manual/en/function.strrpos.phpを使用して、ファイル名に最後に出現する a を見つけ、それを使用して3 文字および 4 文字のファイル拡張子をサポートすることもできます。 (たとえば、「jpg」と「jpeg」の両方)。.substr()

$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 に答える