2015-08-21 47 views
0

所以我有一组20个图像,全部标记为狗。所以dog01,dog02,dog03等等。我使用这段代码将这些代码从目录中拉出来,并将它们显示为5行,像这样4行。按序列加载目录中的图像,加载填充图像代替丢失图像

dog01 dog02 dog03 dog04 dog05 
dog06 dog07 dog08 dog09 dog10 (etc.) 

我“米使用此代码从一个目录中加载图像,并加载它们的顺序。

<?php 
$dirname = "images/"; 
$images = glob($dirname."dog*.png"); 
foreach ($images as $i=>$image) { 
$title = pathinfo($image); 
echo '<img class="deck" src="'.$image.'" alt="'. $title['filename'].'" title="'.$title['filename'].'">'; 
if(($i+1)%5 == 0) echo '<br />'; 
} 
?> 

不过,我想看看是否有一种方式来获得它。因此,如果狗的一个从目录中缺少,它不是加载在其位的填充物,并继续加载其他依次所以,如果dog03丢失,它应该是这样的:

dog01 dog02 filler dog04 dog05 

它会显示填充,并继续按顺序进行。我真的不确定我是否可以在php中实现这一点。如果有人知道我需要采取什么方法,那将不胜感激。我应该注意填充图像位于另一个名为“fillers /”的目录中。

在此先感谢。

回答

2

你有两种方法可以解决这个问题。首先是不用担心它在PHP中,并加载填充图像作为背景图像。通常,图像将被加载到填充图像上,但如果图像未加载,填充图像将保持可见。

另一种方式是通过测试文件是否存在。

作为背景图片:

.deck { 
    //whatever you had here 
    background-image: url("/filler/filler.png"); 
} 

您可能需要做出div容器周围的图像,并把CSS上代替。请注意,如果未设置明确的宽度或高度,则这将不起作用,因为背景图像不会为其所连接的元素指定任何宽度或高度。

通过先测试:

<?php 
$dirname = "images/"; 
$images = glob($dirname."dog*.png"); 
foreach ($images as $i=>$image) { 
    if(file_exists($image)) { 
    $title = pathinfo($image); 
    echo '<img class="deck" src="'.$image.'" alt="'. $title['filename'].'" title="'.$title['filename'].'">'; 
    } else { 
    echo '<img class="deck filler" src="/filler/filler.png" alt="This image does not exist." title="This image does not exist.">'; 
    } 
    if(($i+1)%5 == 0) echo '<br />'; 
} 
?> 

如果您在安全模式下运行PHP这种方法可能无法正常工作。