我不知道任何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);
?>
答案 0 :(得分:2)
此代码没有理由失败。但是,您的$path
变量不应以斜杠结尾(正如您在glob
调用中那样)。
要看的事情:
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;
}
?>