在Div / Table行中重复PHP图像和名称

时间:2013-08-07 22:31:40

标签: php image formatting echo lightbox2

此脚本查看目录,标识所有gif,jpg,jpeg和png文件,并将其显示在正文部分中。该目录包含图像,然后是每个图像的副本,并在末尾添加了“_t”。显示的“_t”图像是指向全尺寸图像的链接,这些图像显示在灯箱中。它本质上是一个缩略图系统。

图片下方是删除了目录/扩展名的文件名,存储为$ filename。

它是Lightbox2的显示脚本的改编版,写作黑客,用自动生成的缩略图显示内容。我的问题是关于在PHP中格式化回显缩略图。

这是我到目前为止的代码:

<?php
    function lightbox_display($dir_to_search, $rel){

        $image_dir = $dir_to_search;
        $dir_to_search = scandir($dir_to_search);
        $image_exts = array('gif', 'jpg', 'jpeg', 'png');
        $excluded_filename = '_t';
            foreach ($dir_to_search as $image_file){
            $dot = strrpos($image_file, '.');
            $filename = substr($image_file, 0, $dot);
            $filetype = substr($image_file, $dot+1);
            $thumbnail_file = strrpos($filename, $excluded_filename);
                if ((!$thumbnail_file) and array_search($filetype, $image_exts) !== false){

echo "<table border=1><td><a href='".$image_dir.$image_file."' title='$filename' rel='".$rel."' data-lightbox=".$filename.">
<img src='".$image_dir.$filename."_t.".$filetype."' alt='".$filename."' width='100' height='80' title=''/ ><br>
$filename</td>
</a>

" ."\n ";
            }
        }
    }
    ?>

&lt;&lt; / A&GT;是我在文件名中拉出每个缩略图下方的“标题”。但是,该脚本会导致图像的直下列(以及每个图像下方的文件名),因为它会为每个图像执行换行。

我想要做的是让表格单元格(或div等)出现在彼此旁边,例如:

[] [] [] [] [] []

..然后在5个缩略图处开始一个新行。

如何格式化 echo 中的内容,在 foreach 期间,它会导致每行回显5个图像,并显示$ filename每个图像,然后在它下面开一个新行?

编辑:代码最初来自http://www.fatbellyman.com/webstuff/lightbox_gallery/index.php

2 个答案:

答案 0 :(得分:0)

我使用这个来生成具有特定行数的循环(这里是测试)中的表:

<?php
$table_rows=5;

$table = "<table border=1><tbody>";
$i = 1;

for ($j = 0; $j < 13; $j++){

    if($i == 1) {
        $table .= "<tr>";
    }

    $table .= "<td>".$j." ".$i."</td>";

    $i = (($i+1)%$table_rows);

    if($i == 1) {
        $table .= "</tr>";
    }
}

if($i != 1){
    $table .= "</tr>";
}

$table .= "</tbody></table>";

echo $table;
?>

我确信这不是最简单的方法,代码看起来很糟糕,但它通常对我有用。

答案 1 :(得分:0)

以下是我为实现这一目标所做的工作:

<?php 
    function lightbox_display($dir_to_search, $rel){

        $image_dir = $dir_to_search;
        $dir_to_search = scandir($dir_to_search);
        $image_exts = array('gif', 'jpg', 'jpeg', 'png');
        $excluded_filename = '_t';
        $piccounter = 0; /* this is how we monitor the length of the rows */
            foreach ($dir_to_search as $image_file){
            $dot = strrpos($image_file, '.');
            $filename = substr($image_file, 0, $dot);
            $filetype = substr($image_file, $dot+1);
            $thumbnail_file = strrpos($filename, $excluded_filename);
                if ((!$thumbnail_file) and array_search($filetype, $image_exts) !== false){
/*Variable $piccounter is the number of thumbnails across in the page per row*/
    if ($piccounter >= 6){ echo "<tr />"; $piccounter=0; } /*Every 6, drop in a </tr> and reset the variable for the new row */
echo "<td><a href='".$image_dir.$image_file."' title='$filename' rel='".$rel."' data-lightbox=".$filename.">
<img src='".$image_dir.$filename."_t.".$filetype."' alt='".$filename."' width='100' height='80' title=''/ ><br> 
$filename<br/> 
</a></td>"; /*$filename is both the image name AND the caption in expanded lightbox*/
$piccounter++; /*After each image, add 1 to the $piccount counter to keep track of the length of the rows*/


                }
        }
    }

    ?>

创建变量$ piccounter以跟踪已打印的缩略图数量。当它达到6(或任何数字)时,它会插入一个表格行。否则,foreach过程会创建TD。

在页面本身上,我在这个脚本调用周围添加了表打开/关闭。