如何在php中显示与php具有相同名称的图像?

时间:2014-09-08 17:01:38

标签: php file-upload

我想在文件夹中显示具有相同名字的图像。例如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;
    }
}

我不使用数据库来存储文件名,所以我仍然很困惑如何在文件夹中显示具有相同值的图像。有人帮帮我......

5 个答案:

答案 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" />';      
    }
}