我想在文件夹中显示具有相同名字的图像。例如IMG1-car.jpg,IMG1-truck.jpg和IMG1-bus.jpg。在示例中,我想显示具有相同名称的图像IMG1。
这是我的代码,但它会显示文件夹中的所有图像。
$curdir = $section_id."/";
$images = getImages($basedir,$curdir);
if($images) {
foreach($images as $img) {
$imglist .= '<img style="margin:03px;" src="'.$baseurl.$curdir.'thumbs/'.basename($img['file']).'" alt="'.$baseurl.$curdir.basename($img['file']).'" title="'.$baseurl.$curdir.basename($img['file']).'">';
}
}
这是我的getImages代码:
$basedir = WB_PATH.MEDIA_DIRECTORY.'/images/';
$baseurl = WB_URL.MEDIA_DIRECTORY.'/images/';
if (!function_exists('getImages')) {
function getImages($basedir,$dir) {
$retval = array();
$imagetypes = array("image/jpeg", "image/gif", "image/png");
if(substr($dir, -1) != "/") $dir .= "/";
$fulldir = $basedir.''.$dir;
$d = @dir($fulldir) or die("getImages: Failed opening directory $fulldir for reading");
while(false !== ($entry = $d->read())) {
if($entry[0] == ".") continue;
if(in_array(mime_content_type($fulldir.$entry), $imagetypes)) {
$retval[] = array( "file" => ''.$dir.$entry );
}
}
$d->close();
asort($retval);
return $retval;
}
}
我不使用数据库来存储文件名,所以我仍然很困惑如何在文件夹中显示具有相同值的图像。有人帮帮我......
答案 0 :(得分:0)
也许这个?
$curdir = $section_id."/";
$images = getImages($basedir,$curdir);
if($images) {
foreach($images as $img) {
$startWith = 'IMG1';
if(substr($img['file'], 0 , strlen($startWith)) == $startWith)
{
$imglist .= '<img style="margin:03px;" src="'.$baseurl.$curdir.'thumbs/'.basename($img['file']).'" alt="'.$baseurl.$curdir.basename($img['file']).'" title="'.$baseurl.$curdir.basename($img['file']).'">';
}
}
}
答案 1 :(得分:0)
只要文件名的片段始终用相同的字符分隔,就像示例中的短划线一样,您可以在其名称上展开,只有在名称符合条件时才显示。
(未经测试的代码,但你得到了要点)
$curdir = $section_id."/";
$images = getImages($basedir,$curdir);
$name = 'IMG1';
if($images) {
foreach($images as $img) {
$nameArray= explode('-',$img['file']);
if (isset($nameArray[0] && $nameArray[0] == $name) {
$imglist .= '<img style="margin:03px;" src="'.$baseurl.$curdir.'thumbs/'.basename($img['file']).'" alt="'.$baseurl.$curdir.basename($img['file']).'" title="'.$baseurl.$curdir.basename($img['file']).'">';
}
}
}
答案 2 :(得分:0)
如果我理解正确,那很简单。首先,我将声明一个函数来更轻松地处理它:
function startsWith($string, $start){
return $start === "" || strpos($string, $start) === 0;
}
然后,使用您的示例:
$curdir = $section_id."/";
$images = getImages($basedir,$curdir);
if($images) {
foreach($images as $img) {
if ( !startsWith(basename($img['file'], "IMG1") ) continue;
$imglist .= '<img style="margin:03px;" src="'.$baseurl.$curdir.'thumbs/'.basename($img['file']).'" alt="'.$baseurl.$curdir.basename($img['file']).'" title="'.$baseurl.$curdir.basename($img['file']).'">';
}
}
希望它有所帮助。
答案 3 :(得分:0)
试试这个:
$curdir = $section_id."/";
$images = getImages($basedir,$curdir);
if($images) {
foreach($images as $img) {
if(strpos($baseurl.$curdir.'thumbs/'.basename($img['file']) , $baseurl.$curdir.'thumbs/IMG1' )!==false){
$imglist .= '<img style="margin:03px;" src="'.$baseurl.$curdir.'thumbs/'.basename($img['file']).'" alt="'.$baseurl.$curdir.basename($img['file']).'" title="'.$baseurl.$curdir.basename($img['file']).'">';
}
}
}
答案 4 :(得分:0)
$handle = opendir(dirname(realpath(__FILE__)) . '/pictures/');
while ($file = readdir($handle)) {
if ($file !== '.' && $file !== '..') {
echo '<img style="margin:10px;" src="pictures/' . $file . '" border="0" />';
}
}