我有这个代码我一直在使用....但我需要一个条件,它将读取/ bg的所有子目录以选择图像而不是特定文件夹,如果它们在子页面上。
到目前为止,我的代码完全适用于所有子页面以显示特定图像:
//This would tell us its on the homepage if it helps:
$this->level() == 0
//This is the code so far
$path = '/home/sites/mydomain.co.uk/public_html/public/images/bg/'.$this->slug;
$homepagefile = URL_PUBLIC.'public/images/bg/'.$this->slug.'/main.jpg';
$bgimagearray = array();
$iterator = new DirectoryIterator($path);
foreach ($iterator as $fileinfo) {
if ($fileinfo->isFile() && !preg_match('\.jpg$/', $fileinfo->getFilename())) {
$bgimagearray[] = "'" . $fileinfo->getFilename() . "'";
}
}
$bgimage = array_rand($bgimagearray);
?>
<div id="bg">
<div>
<table cellspacing="0" cellpadding="0">
<tr>
<td><img src="<?php echo $file.trim($bgimagearray[$bgimage], "'"); ?>" alt=""/></td>
</tr>
</table>
</div>
</div>
任何帮助都会受到赞赏,我确定它不是火箭科学,但我已经尝试了几种方法而且无法理解它。
提前致谢。
答案 0 :(得分:0)
$Directory = new RecursiveDirectoryIterator($path);
$Iterator = new RecursiveIteratorIterator($Directory);
$Images = new RegexIterator($Iterator, '/^.+\.jpg$/i', RecursiveRegexIterator::GET_MATCH);
foreach ($Images as $pathname) {
$bgimagearray[] = $pathname;
}
编辑:我的错误,正则表达式必须与整个路径匹配,而不仅仅是扩展名。在使用RegexIterator进行过滤后,该值只是路径,而不是fileinfo对象。我编辑了上面的代码来修复它。我用PHP 5.3.2进行了测试。
答案 1 :(得分:0)
这就是我想出来的。虽然没有测试过......
<?php
$isHome = $this->level() == 0
$path = '/home/sites/mydomain.co.uk/public_html/public/images/bg/';
if (!$isHome) $path .= $this->slug;
$homepagefile = URL_PUBLIC.'public/images/bg/'.$this->slug.'/main.jpg';
$bgimagearray = array();
$iterator = new DirectoryIterator($path);
foreach ($iterator as $fileinfo) {
if ($fileinfo->isFile() && !preg_match('\.jpg$/', $fileinfo->getFilename()) && !$isHome) {
$bgimagearray[] = "'" . $fileinfo->getFilename() . "'";
} else if ($fileinfo->isDir() && $isHome) {
$iterator2 = new DirectoryIterator($path . $fileinfo->getFilename());
foreach ($iterator2 as $fileinfo2) {
if ($fileinfo2->isFile() && !preg_match('\.jpg$/', $fileinfo2->getFilename())) {
$bgimagearray[] = "'" . $fileinfo->getFilename() . '/' . $fileinfo2->getFilename() . "'";
}
}
}
}
$bgimage = array_rand($bgimagearray);
?>
<div id="bg">
<div>
<table cellspacing="0" cellpadding="0">
<tr>
<td><img src="<?php echo $file.trim($bgimagearray[$bgimage], "'"); ?>" alt=""/></td>
</tr>
</table>
</div>
</div>