2

現在、約 250 jpeg の画像ページがあります。画像と私は現在、ページのセクションに画像を手動で割り当てた Web ページを持っていますが、これには非常に時間がかかるため、実行して画像を div に割り当てるスクリプトを作成したいと考えています。これは通常は簡単ですが、私の問題は、彼らが画像をファイルする方法です。Web ページにはクワッド ドローリングがあり、クワッドの各部分にイメージを割り当てる必要があります。画像ファイル名が異なり、頭痛の種になっています:

ファイル形式Exは以下です。したがって、各クワッドには4つの画像があり、アンダースコアの前の最初の数字のセットはpict 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 に答える