2011-01-11 3 views
0

나는 다음과 같습니다 디렉토리 구조가 있습니다배열로 파일 구조를 읽을 수 있지만 특정 파일

/expandables 
- folder 
- folder 
- folder 
- folder 
    - BannerInfo.txt 
    - index.html 

folder 각자가 똑같은 stucture을 가지고 있습니다. 하나의 파일은 BannerInfo.txtindex.html입니다. 문제가되는 경우 약 250 개 폴더가 있습니다.

이러한 폴더를 반복하고 각 index.html 개의 파일을 배열에 저장하고 싶습니다. index.html 파일 안에는 나중에 표시 할 문자열을 읽으려는 간단한 HTML과 Javascript 만 있습니다.

개별 폴더에서 index.html 파일 만 필터링하는 방법에 어려움을 겪고 있습니다.

이 목적은 임의로 index.html 파일을 선택하고 내용을 텍스트 영역에 넣기 때문입니다. 내가 반환 된 배열에 간단한 array_rand()을 할 수 있고 문자열을 뱉어 줄 알았는데.

아이디어가 있으십니까?

는 편집 :

<? 

    $expandables = array(); 

    $expandables = scandir("expandables/"); 

    $count = 0; 

    foreach($expandables as $expandable) { 
     if ($expandable != "." && $expandable != "..") { 
      $expandableCode = "expandables/" . $expandable . "/index.html"; 

      // get value of index.html for select list 
      $expandableValue = file_get_contents($expandableCode); 


      // echo out options 
      echo "<option value='$expandableValue'>$expandable</option>"; 

     } 
    }  



?> 

을하지만이 정확히 제대로 작동하지 않습니다 :

나는 이런 식으로 뭔가를 내놓았다. 선택 상자에서 선택한 텍스트 영역을 index.html 내용으로 동적으로 채울 수있는 방법이 있습니까?

+0

파일을 열고 파일을 읽고 작업을 수행해야합니다. PHP 문서를보십시오 : http://www.php.net/manual/en/function.file.php – B4NZ41

답변

1

readdir() 또는 scandir()을 사용하여 각 디렉토리의 내용 (즉, 파일 이름)을 가져올 수 있습니다. is_dir()을 사용하여 찾은 항목이 파일인지 디렉토리인지 확인하십시오. 디렉토리 인 경우 해당 디렉토리에서 프로세스를 반복하십시오. 파일 인 경우 'index.html'인지 확인하고, 그렇다면 배열에 넣습니다.

파일 이름 (경로 포함)을 내용 대신 배열에 저장하는 것이 더 좋을 수 있습니다. 후자를 수행하면 각 요청에서 250 개의 파일 모두를 읽을 수 있습니다.

디렉토리를 순회하는 것은 문제가 될 수 있으므로이 목록도 캐시하는 것이 좋습니다.

경로 배열을 파일로 저장할 수 있습니다. 그런 다음 배열에서이 파일을로드 할 수 있습니다.이 모든 디렉토리를 검사하는 것보다 빠릅니다. 파일이 없으면 프로 시저를 실행하여 파일을 작성할 수 있습니다. 그것이 존재한다면, 당신이 하루보다 오래되었는지 (또는 당신이 가장 잘 어울리는지) 확인할 수 있습니다. index.html 파일 중 하나라도 존재하지 않으면 파일 생성 프로세스를 실행할 수 있습니다. 왜냐하면 파일이 더 이상 최신 상태가 아니기 때문입니다.

이 배열을 PHP 코드로 저장하면이를 포함 할 수 있습니다. APC와 같은 PHP 캐시를 사용하면 더 나은 성능을 얻을 수 있습니다.

관련 문제