0

私はPHPの初心者で、フォルダーからサムネイルとフルサイズの画像を取得するPHPスクリプト(インターネット上のスニペットからまとめたもの)を持っています。画像を名前で並べ替えたいのですが、オンラインのサーバーではなく、ローカルの MAMP サーバーでのみ行われます。両方にまったく同じphpファイルを使用しています。

たとえば、3 つの画像 (合計 12 枚) のオンラインの順序は、「View window」、「40 Trees」、「Orphans Walking」であり、ローカルでの並べ替えは「40 Trees、「Eva」、「For Caroline」です。それが私が欲しいものです。

                <?php

                $directory = 'images/slides/other/thumbnails';
                $link = 'images/slides/other/';

                $allowed_types=array('jpg','jpeg','gif','png');
                $file_parts=array();
                $ext='';
                $title='';
                $i=0;


                $dir_handle = @opendir($directory) or die("There is an error with your image directory!");

                while ($file = readdir($dir_handle)) 
                {
                    if($file=='.' || $file == '..') continue;

                    $file_parts = explode('.',$file);
                    $ext = strtolower(array_pop($file_parts));

                    $title = implode('.',$file_parts);

                    if(in_array($ext,$allowed_types))
                    {                                           


                    // Create a new row every four columns
                    if($i % 5 == 0 and $i != 0) 
                    {
                      echo "</tr><tr>";
                    }
                    echo '<td align="middle" valign="middle"><a class="fancybox-button" rel="fancybox-button" href="'.$link.'/'.$file.'" title="'.$title.'">
                                <img src="'.$directory.'/'.$file.'"/>
                                </a>
                            </td>
                            ';

                        $i++;
                    }
                }

                closedir($dir_handle);

                ?>

誰でも私を助けることができますか?また、フォルダーから画像の名前を取得するためのより簡単な解決策があるかどうかを知りたいです。

4

1 に答える 1

0

すべてのファイル名を配列に取り込んで並べ替える必要があります。

    <?php 

            $directory = 'images/slides/other/thumbnails'; 
            $link = 'images/slides/other/'; 

            $allowed_types=array('jpg','jpeg','gif','png'); 

            $aFiles = array();


            $dir_handle = @opendir($directory) or die("There is an error with your image directory!"); 

            while ($file = readdir($dir_handle))  
            { 
                if($file=='.' || $file == '..') continue; 

                $file_parts = explode('.',$file); 
                $ext = strtolower(array_pop($file_parts)); 

                $title = implode('.',$file_parts); 

                if(in_array($ext,$allowed_types)) 
                {                                            
                    $aFiles[] = $file;
                }

            } 

            closedir($dir_handle); 

            asort($aFiles);  // Use whichever sorting function suits you best!  http://www.php.net/manual/en/array.sorting.php

            $i=0; 
            foreach ($aFiles as $file) {

                $file_parts = explode('.',$file); 
                $ext = strtolower(array_pop($file_parts)); 

                $title = implode('.',$file_parts); 


                // Create a new row every four columns 
                if($i % 5 == 0 and $i != 0)  
                { 
                  echo "</tr><tr>"; 
                } 
                echo '<td align="middle" valign="middle"><a class="fancybox-button" rel="fancybox-button" href="'.$link.'/'.$file.'" title="'.$title.'"> 
                            <img src="'.$directory.'/'.$file.'"/> 
                            </a> 
                        </td> 
                        '; 

                    $i++; 
                } 
           }


            ?> 

注: 大まかな例のみ。より良くするために、「爆発」を配列の一部として実行して、2回実行するのを節約します。直接テストされていないため、タイプミスを修正する必要がある場合があります。

于 2012-08-16T01:05:35.760 に答える