我有这个sort函数扫描一个目录并列出所有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];
}
答案 0 :(得分: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 - 查找文件名中.
的最后一次出现,并在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;
}
答案 1 :(得分:0)
使用strrpos
检查子字符串是否存在于另一个字符串
http://php.net/manual/en/function.strrpos.php
查看该页面上的示例,您应该能够匹配toys
并将其排除在数组之外(如果不存在)
答案 2 :(得分:0)
也许我错过了一些东西,但在你说“是的,这是一个JPG”之后,你会做一些事情:
if(strstr($imgfile, 'toys'))
{
//carry on
}