PHP JSON返回字符串问题

时间:2009-09-15 11:12:17

标签: php iphone json

我不知道任何PHP,所以另一位开发人员帮我解决了这段代码。我试图返回我的服务器上的文件夹中的所有文件的名称。然后将这些内容传递给使用数据的iPhone应用程序。但是,我在文件夹中有160个文件,而JSON字符串只返回85.此代码有问题:

 <?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 个答案:

答案 0 :(得分:2)

此代码没有理由失败。但是,您的$path变量不应以斜杠结尾(正如您在glob调用中那样)。

要看的事情:

  • 您确定所有文件都是.jpg,.jpeg或.png文件吗?
  • 您确定某些文件不是.JPG,.JPEG或.PNG(案例在Unix / Linux上很重要)
  • print_r变量上尝试$files。它应列出所有匹配的文件。查看您是否可以识别未列出的文件。

答案 1 :(得分:2)

如果这是在类UNIX系统上,那么您的文件区分大小写。可能是* .jpg会匹配,而* .JPG或* .jpG则不会。

以下函数遍历$ path中的所有文件,并仅返回符合条件的文件(不区分大小写):

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