---
title: "lista alla bilder i en katalog"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/99526-lista-alla-bilder-i-en-katalog"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "Rickard"
published: "2004-03-15T12:49:10.000Z"
updated: "2004-03-16T06:16:30.000Z"
replies: 13
views: 377
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/99526-lista-alla-bilder-i-en-katalog"
---

# lista alla bilder i en katalog

## #1 — Rickard, 2004-03-15T12:49Z

Hallojj...

Jag sitter å försöker sparka ihop ett script som skall lista samtliga \*.gif , \*.jpg , \*.bmp i en viss katalog, alla övriga filer skall filtreras bort i listningen.
Meningen är att varje bild skall bli en klickbar länk så bilden öppnas i nytt fönster, men någonting är fel.
Kan någon titta på vad det är för fel med detta, å även berätta hur jag skall filtrera bort allt som inte är .gif , .jpg och .bmp?

```
<?
$kh=opendir("/var/www/photo");
while($fil=readdir($kh)) {
       if(!($fil=="."||$fil==".."||)) {
       echo "<a href="\['$fil']"\>$fil</a>";
       }
}
closedir($kh);
?>
```

/Rickard

Permalänk: https://www.webforum.nu/p/99526

## #2 — sabbacus, 2004-03-15T14:11Z

Re: lista alla bilder i en katalog

```
<?
$kh=opendir("/var/www/photo");
while($fil=readdir($kh)) {
       if(!($fil=="."||$fil==".."||)) {
       echo "<a href="\['$fil']"\>$fil</a>";
       }
}
closedir($kh);
?>
```

Det du ska göra är t.ex att använda funktionen substr() och titta på de 3-4 sista bokstäverna och se vad de "är".
detta gör du whileloopen för varje fil. Hade jag haft mer tid hade jag skrivit koden åt dig men nu får du helt enkelt lära dig hur du gör :)

Om du inte klurat ut det till kl 19 alt ingen gett dig ett bättre svar så ska jag ta en titt till på problemet.
Nu ska jag återgå till arbetet igen :)

Permalänk: https://www.webforum.nu/p/1301299

## #3 — sabbacus, 2004-03-15T14:11Z

Re: lista alla bilder i en katalog

```
<?
$kh=opendir("/var/www/photo");
while($fil=readdir($kh)) {
       if(!($fil=="."||$fil==".."||)) {
       echo "<a href="\['$fil']"\>$fil</a>";
       }
}
closedir($kh);
?>
```

Det du ska göra är t.ex att använda funktionen substr() och titta på de 3-4 sista bokstäverna och se vad de "är".
detta gör du whileloopen för varje fil. Hade jag haft mer tid hade jag skrivit koden åt dig men nu får du helt enkelt lära dig hur du gör :)

Om du inte klurat ut det till kl 19 alt ingen gett dig ett bättre svar så ska jag ta en titt till på problemet.
Nu ska jag återgå till arbetet igen :)

Permalänk: https://www.webforum.nu/p/1301300

## #4 — Rickard, 2004-03-15T14:30Z

heh, då får jag nog vänta på att du har tid..
Jag är ganska grön när det gäller PHP, så hur jag använder substr() har jag inte en aning om...  =)

Permalänk: https://www.webforum.nu/p/1301312

## #5 — fiddler, 2004-03-15T14:33Z

```php
$dir = "galleri/";

//Skapa en vektor med tillåtna filtilläg
$endings = array('.jpg','.bmp','.gif');
 
$dh = opendir($dir);

while ( $filename = readdir($dh) ) {
  foreach ( $endings as $ending ) {
    if ( eregi($ending,$filename) )
      $images[] = $filename;
  }
}
```

 

Har använt ovanstående för att lägga filnamnen i en array. Byt ut "$images\[\] = $filename" mot någon lämplig echo-sats så borde det fungera.

Permalänk: https://www.webforum.nu/p/1301316

## #6 — Rickard, 2004-03-15T14:54Z

Tackar.. det där funkade perfekt..  =)

Nu har jag bara en sista lilla fråga som jag kom på i efterhand.
Scriptet jag laddar upp bilderna med, sparar bilderna med ett nummer och sedan filnamnet.. varför vet jag inte (Jag har inte skrivit det själv utan hittat det på en scriptsajt med gratis script).
Går det på något sätt att solla bort samtliga siffror som kan finnas med i filnamnet?
Det är inte så där jätte snyggt att ha en lista med bilder där alla bilder börjar med slumpade 8 siffror och sedan filnamnet. =)

Red:

Bästa vore nog i sånna fall att ta bort samtliga sifforo i filnamnet, eftersom uppladdningsscriptet troligen förr eller senare kommer att lägga till / ta bort några sifror i början.
Att då övriga siffror (ex. bild2.jpg) där 2:an i den filnamnet försvinner spelar ingen större roll..  =)

Permalänk: https://www.webforum.nu/p/1301331

## #7 — sabbacus, 2004-03-15T17:52Z

Siffrorna finns sannolikt där för att skapa unika filnamn så att du inte skriver över filer av misstag.

Permalänk: https://www.webforum.nu/p/1301443

## #8 — Rickard, 2004-03-15T18:42Z

Jo, det var just vad jag också tror.
Jag jag vill åstakomma nu, är att när filerna listas med scriptet ovan, så skall siffrorna sållas bort...
Så om en av filerna tex heter 7123576bild1.jpg  så skall det stå bild1 (eller möjligen bara bild.jpg) när jag listar dom med scriptet.

Frågan är bara hur jag åstakommer det..

Permalänk: https://www.webforum.nu/p/1301470

## #9 — sabbacus, 2004-03-15T18:54Z

Någonstans i skriptet skapas filnamnet. Det bör se ut typ såhär:

```
$new_filename = $random_number . $_FILES['whatever']['name']:
```

Spana i PHPs [manual om filuppladdning](http://se.php.net/manual/en/features.file-upload.php) så kanske det klarnar. Annars är det bara att posta koden här så får vi felsöka :)

Permalänk: https://www.webforum.nu/p/1301477

## #10 — Rickard, 2004-03-15T19:47Z

Varför göra det krångligt och leta igenom uppladdningsscriptet (som är på c:a 450 filer sammanlaggt, det är ett helt system typ).

Det enda jag vill, är att dem kod jag använder som visas här ovan, skall sålla bort samtliga siffror ifrån filnamnen när dom listas.
Altså, filnamnen skall lämmnas intakta men listningen visar inga nummer.

ex. 

```
echo "<a href=\"987265bild1.jpg\">bild.jpg</a>";
```

Givetvis är 987265bild1.jpg egentligen variabeln $filename enligt ovan, men bara för att förklara ytterligare vad jag menar (För jag är osäker på om jag verkligen gjort mig förstådd.) =)
Meningen är altså atyt den listar filnamnet, men det som visas på sidan är helt enkelt utan alla siffror.

Permalänk: https://www.webforum.nu/p/1301504

## #11 — sabbacus, 2004-03-15T19:55Z

Reguljära uttryck är inte min starka sida men detta bör fungera jättebäst :)

```
// Alla siffror
$pattern = "[0-9]";

// Ska ersättas med... nada
$replacement = "";

// Reguljärt uttryck
$filename_without_digits = preg_replace($pattern, $replacement, $filename);
```

Permalänk: https://www.webforum.nu/p/1301507

## #12 — nkrantz, 2004-03-15T23:09Z

sabbacus kod funkar säker, men om du vet att det är de 8 första tecknet som är siffror, varför inte bara ta bort dem genom att köra

```php
substr($bildVariabel, 8);
```

// Nippe

Permalänk: https://www.webforum.nu/p/1301600

## #13 — Rickard, 2004-03-16T03:37Z

Tyvärr fick jag ingen av dem att funka.

Sabbacus kod fick förljande fel (flera ggr).

```
Warning: Empty regular expression in /var/www/jkdsweden/jkdsweden.com/phpscripts/flexphpicen/en/photo/netscape.php on line 19
```

Line 19 är följande: 

```
$filename_without_digits = preg_replace($pattern, $replacement, $filename);
```

Dessutom listade den då ALLT i katalogen 3 ggr om.. även "." och "..", samt phpscriptet själv.
nkrantz: Din kod fick inga felmeddelanden, men dock liksom sabbacus kod, listade den allt i katalogen 3 ggr om.

Det kan mycket väl vara för att jag inte vet vart i koden jag skall placera er kod, jag placerade den på raden innan echo satsen.

Permalänk: https://www.webforum.nu/p/1301615

## #14 — fiddler, 2004-03-16T06:16Z

Prova med

```php
{
Den nya koden
echo satsen
}
```

 

Alltså ett par {}.

Permalänk: https://www.webforum.nu/p/1301627

---

Tråden på webben: https://www.webforum.nu/amne/php/99526-lista-alla-bilder-i-en-katalog
