Foreach循环取决于目录中的文件
有没有一种方法来创建一个foreach循环,这将运行的目录中存在一个序号的文件名的多个实例?
例如,我有一个目录与图像。 图像将具有如下所示的文件名:
firstname-lastname_before1.jpg
firstname-lastname_after1.jpg
firstname-lastname_before2.jpg
firstname-lastname_after2.jpg
firstname2-lastname2_before1.jpg
firstname2-lastname2_after1.jpg
firstname2-lastname2_before2.jpg
firstname2-lastname2_after2.jpg
这基本上显示了属于两个人的照片。 每个人有四张照片,两张两张照片,一张前后。
我可以在回声时处理个别名称,但我试图找到一种设置foreach循环的方法,该循环将查找当前应用的条件的所有顺序实例。
即如果我正在查看一个人的页面,则foreach循环应该贯穿与该人相关的所有文件。
目前我只有一个硬编码的我想要循环的块的实例。
<div class="photo-set col-md-4">
<figure class="cd-image-container">
<?php $procedure = get_post_custom_values('Procedure'); ?>
<img src="<?php echo get_template_directory_uri()."/img/before-after/".preg_replace("/[s_]/", "-", strtolower($procedure[0]))."_".preg_replace("/[s_]/", "-", strtolower($post->post_title))."_after1.jpg";?>" alt="Original Image">
<span class="cd-image-label" data-type="original">After</span>
<div class="cd-resize-img">
<img src="<?php echo get_template_directory_uri()."/img/before-after/".preg_replace("/[s_]/", "-", strtolower($procedure[0]))."_".preg_replace("/[s_]/", "-", strtolower($post->post_title))."_before1.jpg";?>" alt="Modified Image">
<span class="cd-image-label" data-type="modified">Before</span>
</div>
<span class="cd-handle"></span>
</figure>
</div>
这只是使用before1和after1,因为我想先设计它。
所以总结一下,我的问题是:我可以有一个foreach循环,它可以找到所有符合下面条件的文件,按顺序命名,并将它们排序为一组2(前后)?
更新:
我试过使用glob函数,但我真的不确定这是我正在寻找的。 使用此代码后:
$procedures = get_post_custom_values('Procedure');
$procedure = preg_replace("/[s_]/", "-", strtolower($procedures[0]));
$patientName = preg_replace("/[s_]/", "-", strtolower($post->post_title));
foreach(glob('img/before-after/*$patientName*/*.jpg') as $filename) {
网页上没有任何内容被返回。 我不确定glob表达式应该如何。 因为它需要首先找到一个匹配$ patientName的目录,然后在标题中有大量不同过程的文件。 像这样一个例子:
tummy-tuck_john-smith_before1.jpg
tummy-tuck_john-smith_after1.jpg
tummy-tuck_john-smith_before2.jpg
tummy-tuck_john-smith_after2.jpg
nose-reshaping_john-smith_before1.jpg
nose-reshaping_john-smith_after1.jpg
等等。所以我怎么能编码它,以便它将拉出正确的文件(两套,因为我有一个前后每个),患者姓名和程序?
更新:
此代码也不会返回任何内容,我不知道为什么? $ files数组返回为0。
$procedures = get_post_custom_values('Procedure');
$procedure = preg_replace("/[s_]/", "-", strtolower($procedures[0]));
$patientName = preg_replace("/[s_]/", "-", strtolower($post->post_title));
$directory = get_template_directory_uri()."/img/before-after/".$patientName."/";
$files = glob($directory.'*', GLOB_BRACE);
foreach($files as $filename) {
有人可以帮忙吗?
你可以使用glob()函数。 您可以将第一个参数作为模式传递并循环访问该函数的结果。
例
foreach(glob('[a-zA-Z0-9]+-[a-zA-Z_0-9]+.jpg') as $filename)
{
echo $filename;
}
您也可以使用w
但这取决于您的条件。