好了,我已经把这个问题重写了几次了。我有一个目录images
。它包含66个子目录,这些子目录遵循date_filenumber
(YYYYMMDD_1234
)格式并包含图像,以及少数其他不包含图像的子目录。我只想获得66个,随机选择其中一个,然后将其图像的路径插入HTML中。我快到了:
PHP
$A = glob('images/????????_????');
$B = array_rand($A);
$path = ($A[$B]).'/1x.jpg'
HTML
<img src="<?php echo $path;?>">
但这给了我<img src="images/YYYYMMDD_1234/1x.jpg"
。我只想要<img src="YYYYMMDD_1234/1x.jpg">
。
这就是我被困住的地方。想法吗?
glob()
的目录使用GLOB_ONLYDIR
(以防那里可能有文件),然后排除包括与preg_grep()
使用PREG_GREP_INVERT
:
$dirs = preg_grep('/includes/', glob('images/*', GLOB_ONLYDIR), PREG_GREP_INVERT);
如果将来您添加了不想要的其他目录,那么只获取与您的命名模式匹配的目录:
$dirs = preg_grep('/'d{8}_'d{4}$/', glob('images/*', GLOB_ONLYDIR));
或者对于你的简单模式:
$dirs = glob('*_*', GLOB_ONLYDIR);
使用glob()
和substr()
:
$foldersArray = array();
foreach(glob('images/*') as $folder) {
if (strpos($folder, "includes") !== 0) {
if (strpos($folder, ".") === false) $foldersArray[] = $folder; //exclude files
}
}