PHP JSON String Return soru

2 Cevap php

Ben çok başka bir geliştirici bu kod ile yardımcı beni herhangi bir PHP bilmiyorum. Benim sunucuda bir klasördeki tüm dosyaların isimlerini dönmek için çalışıyorum. Bunlar daha sonra verileri kullanır Benim iPhone app geçirilir. Ancak, ben klasöründe 160 dosya var ve JSON dize yalnızca 85 döndürür bu kod ile yanlış bir şey var mı.:

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

?>

2 Cevap

Bu kod başarısız gerektiğini hiçbir sebep yoktur. (O glob çağrısı gibi) Ancak, $path değişken bir taksim sona olmamalıdır.

Bakmak şeyler:

  • Tüm dosyalar. Jpg,. Jpeg veya. Png dosyaları emin misiniz?
  • Eğer bazı dosyaları. JPG,. JPEG veya. PNG (vaka Unix / Linux üzerinde önemli) değil eminseniz
  • print_r $files değişkeni deneyin. Tüm eşleşen dosyaları listelemek gerekir. Eğer listede olmayan dosyaları tanımlamak görün.

Bu bir UNIX-benzeri bir sistem üzerinde ise, dosyaları harf duyarlıdır. Bu, *. Jpg maç olacağını olabilir *. JPG veya *. Jpg olmaz oysa.

Aşağıdaki fonksiyon $ yol tüm dosyaların geçer, ve kriterleri (harf duyarsız) maç hangi yalnızca döndürür:

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