pixel: Gross- und Kleinschreibung in der Funktion nicht beachten

Hallo zusammen

Ich habe eine Funktion die alle JPG-Bilder auflistet. Es hat aber Bilder im Verzeichnis, deren Endung in Grossbuchstaben geschrieben sind (z.b. bild.JPG). Diese Dateien werden nicht übernommen. Weiss jemand was ich einstellen muss oder wie ich die Funktion umschreiben muss, damit alle Bilder (*.JPG und *.jpg) Angezeigt werden?

function listPicture()
{
 $x    = 0;

foreach (glob($dir."*.jpg") as $filename)
 {
  $imgxy                 = getimagesize($filename);
  $picture[$x]['file']   = $filename;
  $picture[$x]['width']  = $imgxy[0];
  $picture[$x]['height'] = $imgxy[1];
  $picture[$x]['size']   = number_format(filesize($filename) / 1024);
  $x++;

}

return $picture;
}

Vielen Dank
Pixel

  1. Hallo Pixel,

    Weiss jemand was ich einstellen muss oder wie ich die Funktion umschreiben muss, damit alle Bilder (*.JPG und *.jpg) Angezeigt werden?

    Das Problem scheint es nur auf Windows-Systemen zu geben: sie Kommentare zu glob().

    Ansonsten könntest Du Dir die Funktion auch mit einem nicht case-sensitiven regulären Ausdruck selbst basteln, etwa so:

    $fh=opendir(BILDER-VERZEICHNIS);  
    while ($file = readdir($fh)) {  
        if(preg_match('/\.jpg$/i', $file)) { // "i" macht die RegEx case insensitive  
            $picture[$foo][$bar] = 'bla';  
        }  
    }  
    closedir($fh);
    

    Phlo

    1. ...Du brauchst natürlich noch einen "Zähler" (wie Du ihn auch hattest) und die "Array-Befüllung" müsste dann so aussehen:

      $picture[$x]['file']   = $file;  
      // usw...
      

      Phlo

    2. Hallo Pixel,

      Weiss jemand was ich einstellen muss oder wie ich die Funktion umschreiben muss, damit alle Bilder (*.JPG und *.jpg) Angezeigt werden?

      Das Problem scheint es nur auf Windows-Systemen zu geben: sie Kommentare zu glob().

      Ansonsten könntest Du Dir die Funktion auch mit einem nicht case-sensitiven regulären Ausdruck selbst basteln, etwa so:

      $fh=opendir(BILDER-VERZEICHNIS);

      while ($file = readdir($fh)) {
          if(preg_match('/.jpg$/i', $file)) { // "i" macht die RegEx case insensitive
              $picture[$foo][$bar] = 'bla';
          }
      }
      closedir($fh);

      
      >   
      > Phlo  
        
      Hallo Phlo  
        
      Besten Dank für den Input. Ein Hinweis im Manual hat mir weiter geholfen:  
        
      foreach (glob("{\*.jpg,\*.JPG}",GLOB\_BRACE ) as $filename)  
        
      Damit funktioniert es.  
        
      Auf Windows (XAMPP) funktioniert es einwandfrei. Nur auf dem WEB-Server (unix) nicht. Gut möglich das es an einer Einstellung vom Hoster liegt.  
        
      Gruss Pixel
      
  2. echo $begrüßung;

    Weiss jemand was ich einstellen muss oder wie ich die Funktion umschreiben muss, damit alle Bilder (*.JPG und *.jpg) Angezeigt werden?

    Die meisten Funktionen haben in ihrer Beschreibung im Handbuch Verweise zu anderen Funktionen. Hast du mal bei glob() nachgesehen und ist dir fnmatch() aufgefallen?

    echo "$verabschiedung $name";