2

我目前有一个大约 250 jpeg 的图片页面。图像,我目前有一个网页,我在其中手动将图片分配给页面上的一个部分,但是这非常耗时,并且希望创建一个脚本来运行并将图像分配给 div。虽然这通常很容易,但我的问题是他们归档图像的方式。在网页上,我有一个四边形绘图,四边形的每个部分都需要分配给它的图像。图像文件名各不相同,这让我很头疼:

文件格式 Ex 如下。所以每个四边形将有 4 个图像,下划线之前的第一组数字是图片 ID,下划线之间的数字是图片所在的四边形的哪个部分。但是 pict id 的长度各不相同,我不知道该怎么做。任何想法或建议表示赞赏。

  • 1234_1_01.jpeg
  • 1234_2_03.jpeg
  • 1234_3_02.jpeg
  • 1234_4_01.jpeg
  • 345422_1_01.jpeg
  • 345422_2_02.jpeg 等
4

2 回答 2

2

最好的办法是浏览整个文件夹并相应地过滤图片,如下所示:

$myPicFolder = "path/to/pictures/";
$thePics = array();
if (is_dir($myPicFolder)) {
    if ($dh = opendir($myPicFolder)) {
        while (($file = readdir($dh)) !== false)) {
            if(!is_dir($myPicFolder . $file){
                list($intersectionID,$section,$imgID) = explode('_'.$file);//Seperates the parts of the name for easier access
                //check if the ID is already a key in $thePics
                if(!array_key_exists($intersectionID,$thePics)){
                    //Add the new ID if it does not exist with an empty array.
                    $thePics[$intersectionID]=array();
                }
                if(!array_key_exists($section,$thePics[$intersectionID])){
                    //Add the new ID if it does not exist with an empty array.
                    $thePics[$intersectionID][$section]=array();
                }
                // Add a new part to the ID since each picture ID has 4 pictures.
                $thePics[$intersectionID][$section][] = $file;
            }
        }
        closedir($dh);
    }
}


//$thePics will then look like:
// array('1234'=>array(
//        '1'=>'1234_1_01.jpeg',
//        '2'=>'1234_2_03.jpeg',
//        '3'=>'1234_3_02.jpeg',
//        '4'=>'1234_4_01.jpeg'),
//    '345422'=>array(
//        '1'=>'345422_1_01.jpeg',
//        '2'=>'345422_2_02.jpeg')
//    );

//Cycle through the pictures...
foreach($thePics as $pictureID=>$quad){
    echo '<div class="intersection">';
    foreach($quad as $quadPart=>$pictures){
        echo '<div class=”s1”&gt;';
        foreach($pictures as $pictureSRC){
            echo '<img src="'.$pictureSRC.'"/>';
        }
        echo '</div>';
    }
    echo '</div>';
}

请记住对文件性质进行更多验证,以确保您只发送图片......也许测试文件扩展名和 mime 类型......

编辑:添加了一些注释并使用 list() 为我正在使用的变量提供明确的名称,以便更好地理解。

于 2013-01-14T14:44:25.940 回答
0
<?php

$test = '1234_1_01.jpeg';
list($pict_id, $quad_id) = explode('_', $test);
echo "Pict ID: $pict_id<br />
      Quad ID: $quad_id";
于 2013-01-14T20:55:58.793 回答