👾 php

php 폴더 읽고, 이름 순 정렬하고, 이미지 출력, 이미지명 출력

(。θᗨθ。) 2022. 12. 19. 09:43
<ul>
  <?php
  $dir = $_SERVER['DOCUMENT_ROOT'] . '/asset/images/rnd/patent/sort1/';
  $allfiles = array();
  if (is_dir($dir)) {
    if ($handle = opendir($dir)) {
      while (($file_ext = readdir($handle)) !== false) {
        $allfiles[] = $file_ext;
      }
      closedir($handle);
    }
  }
  sort($allfiles);
  foreach ($allfiles as $file_ext) {
    if ($file_ext != '.' && $file_ext != '..') {
      $fileNameNum = substr($file_ext, 0, strrpos($file_ext, ".")); //파일이름이랑 확장자 분리
      $fileName = substr(strrchr($fileNameNum, "+"), 1); //파일이름: 00+파일이름.확장자 <<숫자 뺀 진짜 이름으로 남김
      $replace_pairs = array(
          "__" => ":",
          "~" => "/",
        );

        $result = str_replace(array_keys($replace_pairs), array_values($replace_pairs), $fileName);
      // $result = str_replace('__', ':', $fileName); //파일명에서 ':'못하기 때문에 '__'로 대체했던걸 다시 
      // $result = str_replace('~', '/', $result); //파일명에서 '/'못하기 때문에 '~'로 대체했던걸 다시 변경
  ?>
      <li>
        <a href="javascript:void(0)" onclick="img_open(this)">
          <figure><img src="/asset/images/rnd/patent/sort1/<?= $file_ext ?>" alt="<?= $result ?>"></figure>
        </a>
        <p><?= $result ?></p>
      </li>
  <?
    }
  }
  ?>
</ul>

 

 

↓ 결과는 위와 동일,  but "rsort()"하면 '..'이 shift되지 않기 때문에 오류남, 그래서 위의 방법으로 사용하는게 좋음, array_shift 사용하려면 코드 순서 바꿔야할 듯

<ul>
  <?php
  $dir = $_SERVER['DOCUMENT_ROOT'] . '/asset/images/rnd/patent/sort2/';
  $allfiles = array();
  if (is_dir($dir)) {
    if ($handle = opendir($dir)) {
      while (($file_ext = readdir($handle)) !== false) {
        $allfiles[] = $file_ext;
      }
      closedir($handle);
    }
  }
  sort($allfiles);
  array_shift($allfiles);
  array_shift($allfiles);
  foreach ($allfiles as $file_ext) {
    // if ($file_ext != '.' && $file_ext != '..') { //위에 array_shift 로 대체
      $fileNameNum = substr($file_ext, 0, strrpos($file_ext, ".")); //파일이름이랑 확장자 분리
      $fileName = substr(strrchr($fileNameNum, "+"), 1); //파일이름: 00+파일이름.확장자 <<숫자 뺀 진짜 이름으로 남김
      $replace_search = array("__", "~");
      $replace_target = array(":", "/");
      $result = str_replace($replace_search, $replace_target, $fileName);
  ?>
      <li>
        <a href="javascript:void(0)" onclick="img_open(this)">
          <figure><img src="/asset/images/rnd/patent/sort2/<?= $file_ext ?>" alt="<?= $result ?>"></figure>
        </a>
        <p><?= $result ?></p>
      </li>
  <?
    }
  // }
  ?>
</ul>
  <script>
  //이미지 팝업
    const img_open = (e) => {
      let img = $(e).find("img").attr("src")
      // console.log(img)
      window.open(img, "_blank", "width=600, height=850, top=70, left=600, scrollbar=no, resizable=no")
    }
  </script>
728x90