我在下面有以下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”的图像文件。
目录文件夹包含以下文件:
我想要的结果是随机标题只输出上面列表中的图像“4,5,7”。
答案 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
}
}