2012-08-16 53 views
0

我只是一個初學者在PHP中,並有一個PHP腳本(我從互聯網片段放在一起),從文件夾中獲取縮略圖和全尺寸圖像。我希望圖像按名稱排序,但它們只能在我的本地MAMP服務器上進行,而不能在線上在服務器上進行。我正在使用完全相同的PHP文件。PHP本地圖像分類工作,但不在線

例如,3張圖片(從總數12張)的在線訂單是「查看窗口」,「40樹木」,「孤兒行走」,因爲本地的排序是「40樹木」,「伊娃」,「對於卡羅琳」,這是我想要的。

   <?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); 

       ?> 

誰能幫助我呢?還有,我想知道是否有從該文件夾獲取圖像的名稱的簡單的解決方案。

+0

您確定在線版本具有該圖片文件夾的權限嗎? – 2012-08-16 00:50:44

+0

至於你關於獲取文件名稱的簡單解決方案的問題,請查看php文檔中的'pathinfo()'函數。 – jmm 2012-08-16 01:54:42

回答

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++; 
       } 
      } 


      ?> 

注意:僅限於粗略示例;爲了使它更好,將「爆炸」作爲數組的一部分來保存兩次。沒有直接測試,所以你可能需要清理錯別字。

+0

哇謝謝!我沒有絲毫的線索是如何工作的......我唯一需要改變的是擺脫最後的} – 2012-08-16 02:16:28

相關問題