从某些子目录的名称中随机选择(按命名模式过滤)

时间:2016-09-21 20:01:06

标签: php html arrays random

好吧,在我解决问题的时候,我已经重复了几次这个问题。所以,我有一个目录images。它包含66个子目录,这些子目录遵循date_filenumberYYYYMMDD_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">

我被困的地方。想法?

2 个答案:

答案 0 :(得分:2)

glob()使用GLOB_ONLYDIR的目录(如果可能存在文件),然后使用preg_grep() <{1}}排除包含:< / p>

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));

答案 1 :(得分:0)

使用$VAR1 = [ { 'value' => { 'a' => 'd', 'b' => 'e', 'c' => 'f' } }, { 'value' => { 'a' => 'g', 'b' => 'h', 'c' => 'x' } } ]; glob()

substr()