3 Stimmen

PHP JSON Return String Frage

Da ich keine PHP-Kenntnisse habe, half mir ein anderer Entwickler bei diesem Code. Ich versuche, die Namen aller Dateien in einem Ordner auf meinem Server zurückzugeben. Diese werden dann an meine iPhone-App weitergegeben, die die Daten verwendet. Ich habe jedoch 160 Dateien in dem Ordner und der JSON-String gibt nur 85 zurück. Gibt es etwas falsch mit diesem Code:

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

?>

2voto

Vegard Larsen Punkte 12187

Es gibt keinen Grund, warum dieser Code fehlschlagen sollte. Allerdings ist Ihr $path sollte nicht mit einem Schrägstrich enden (wie Sie es in der glob Aufruf).

Dinge, die man sich ansehen sollte:

  • Sind Sie sicher, dass es sich bei allen Dateien um .jpg-, .jpeg- oder .png-Dateien handelt?
  • Sind Sie sicher, dass einige der Dateien nicht .JPG, .JPEG oder .PNG sind (unter Unix/Linux spielt die Groß-/Kleinschreibung eine Rolle)?
  • Versuchen Sie print_r über die $files Variable. Sie sollte alle übereinstimmenden Dateien auflisten. Versuchen Sie, die Dateien zu identifizieren, die nicht aufgelistet sind.

2voto

Auf einem UNIX-ähnlichen System wird bei den Dateien zwischen Groß- und Kleinschreibung unterschieden. Es kann sein, dass *.jpg passt, während *.JPG oder *.jpG nicht passt.

Die folgende Funktion durchsucht alle Dateien in $path und gibt nur diejenigen zurück, die Ihren Kriterien entsprechen (Groß- und Kleinschreibung wird nicht berücksichtigt):

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X