定位包含特定目录中文本的特定文件?

时间:2017-02-07 11:28:58

标签: php image directory

我在下面有以下php代码,它会在页面加载时随机化标题图像。

<?php
function displayBackground() {
global $site;
global $dirimgpth;

$dir = 'uploads/product-images/' .$dirimgpth. '';
$cnt = 0;
$bgArray= array();

if ($handle = opendir($dir)) {

    while (false !== ($entry = readdir($handle))) {

    $pathToFile = $dir.$entry;
    if(is_file($pathToFile))
    {   
        if(getimagesize($pathToFile)!=FALSE)
        {
            $bgArray[$cnt]= $pathToFile;
            $cnt = $cnt+1;
        }
    }   
}   
$myRand = rand(0,($cnt-1)); 
$val = $bgArray[$myRand];

}

closedir($handle);

echo($val);
}
?>

这一切都很好,这很好,但我从中获取图像的目录有几百个包含缩略图和大图像的图像文件。

我想更改上面的代码以定位目录文件夹,但只获取文件名中带有特定文本“-header.jpg”的图像文件。

目录文件夹包含以下文件:

  1. doors.jpg
  2. windows.jpg
  3. 铝 - thumb.jpg
  4. 窗口header.jpg
  5. 温室-header.jpg
  6. 平铺-thumb.jpg
  7. 屋顶header.jpg
  8. 我想要的结果是随机标题只输出上面列表中的图像“4,5,7”。

2 个答案:

答案 0 :(得分:0)

  

这一切都很好,这很好,但我从中获取图像的目录有几百个包含缩略图和大图像的图像文件。

     

我想更改上面的代码以定位目录文件夹,但只获取文件名中带有特定文本“-header.jpg”的图像文件。

由于这些JPG没有像我想象的那样经常更改/添加/删除,因此您可以安全地创建静态数组(在添加/删除图像时更新),包含您选择的所有文件名,然后只需从中选择随机条目阵列。

  

我想要的结果是随机标题只输出上面列表中的图像“4,5,7”。

你需要glob()但是再次 - 由于性能损失,这是错误的方法。

此外,您当前的代码更加痛苦,因为您似乎不仅扫描文件夹而且还读取图像尺寸。这是错误的,因为你只需要你选择的图像,而不是所有图像。

答案 1 :(得分:0)

如果$ entry是您的文件名,您可以检查它是否包含名称中的“-header”或不是这样。

  while (false !== ($entry = readdir($handle))) {
   if (strpos($entry, '-header') !== false) {
     $pathToFile = $dir.$entry;
     // follow with your code
   }
  }