2009-09-15 8 views
3

PHP를 모르므로 다른 개발자가이 코드를 도와주었습니다. 내 서버의 폴더에있는 모든 파일의 이름을 반환하려고합니다. 그런 다음 데이터를 사용하는 iPhone 앱에 전달됩니다. 그러나, 나는 폴더에 160 개 파일이와 JSON 문자열은 85를 반환이 코드에 문제가 있습니다 :PHP JSON Return String 질문

이 코드가 실패 할 이유가 없다
<?php 
$path = 'Accepted/'; 

# find all files with extension jpg, jpeg, png 
# note: will not descend into sub directorates 
$files = glob("{$path}/{*.jpg,*.jpeg,*.png}", GLOB_BRACE); 

// output to json 
echo json_encode($files); 

?> 
+0

당신은 반환 된 JSON 문자열 및 파일 목록에서 편집 할 수 폴더를 질문에 추가 하시겠습니까? –

+0

'glob'가 올바른 값을 반환하는지 확인 했습니까? – Gumbo

답변

2

. 그러나 변수 $path은 슬래시로 끝나서는 안됩니다 (glob 호출 에서처럼).

  • 당신이 모든 파일, .JPEG 또는 .png 파일을 .JPG되어 있는지 위치 :에

    상황이보고 하는가?

  • 는 특정 파일 중 일부가 .JPG, .JPEG 또는 .PNG (경우 유닉스/리눅스에 중요한) 아니라는 것을
  • $files 변수에 print_r을 시도하고 있습니다. 일치하는 모든 파일을 나열해야합니다. 나열되지 않은 파일을 식별 할 수 있는지 확인하십시오.
+0

감사합니다. 일부 파일 이름이 대문자로 바뀌 었습니다. –

2

UNIX 계열 시스템의 경우 파일은 대소 문자를 구분합니다. * .jpg 또는 * .jpg는 그렇지 않지만 * .jpg는 일치 할 수 있습니다.

다음 함수는 $ 경로에있는 모든 파일을 통과하고 기준 (대소 문자 구분)과 일치하는 만을 반환

<?php 
$path = 'Accepted/'; 
$matching_files = get_files($path); 
echo json_encode($matching_files); 

function get_files($path) { 
    $out = Array(); 
    $files = scandir($path); // get a list of all files in the directory 
    foreach($files as $file) { 
     if (preg_match('/\.(jpg|jpeg|png)$/i',$file)) { 
      // $file ends with .jpg or .jpeg or .png, case insensitive 
      $out[] = $path . $file; 
     } 
    } 
    return $out; 
} 
?>