Avatar billede Slettet bruger
28. juli 2008 - 19:50 Der er 2 kommentarer og
1 løsning

Dir-liste med wildcards

Hej

Jeg har følgende script:
        $dir    = "../grafik/kampe";  // Mappe med billeder
        if (file_exists($dir."/".$kampid."-*.jpg")) {
            if (is_dir($dir)) {
                $thumbs  = "../grafik/kampe/thumbs";      // Mappe til thumbnails
                $size    = 60;                            // Max bredde/højde (pixels)

                function Thumb($sourcefile, $targetfile, $size) {
                    $source_id = imageCreateFromJPEG($sourcefile);
                    $source_x  = imagesx($source_id);
                    $source_y  = imagesy($source_id);
                    $delta    = $size/max($source_x,$source_y);
                    $dest_x    = round($source_x*$delta);
                    $dest_y    = round($source_y*$delta);
                    $target_id =imagecreatetruecolor($dest_x, $dest_y);
                    imagecopyresampled($target_id,$source_id,0,0,0,0, $dest_x,$dest_y, $source_x,$source_y);
                    imagejpeg($target_id,$targetfile, 100);
                }

                $out = "";
                $d = dir($dir);
                while (false !== ($pic = $d->read())) {
                    $navn = explode(".", $pic);
                    $ext = array_pop($navn);
                    if ($ext == 'jpg' || $ext == 'jpeg') {
                        $billedenavn = implode(".", $navn);
                        $navn = "$thumbs/".$billedenavn."_t.".$ext;
                        $sti = "$dir/$pic";
                        if (!file_exists($navn)) Thumb($sti, $navn, $size);
                        $img_size = getimagesize($navn);
                        $billede_array[] = "<img style=\"cursor: hand;\" class=\"image\" border=\"0\" src=\"$navn\" alt=\"$pic\" $img_size[3] onclick=\"java script:galleri('/sider/galleri.php?pic=$billedenavn.jpg&amp;kampid=$kampid')\">";
                    }
                }

                $d->close();

Jeg kan ikke gennemskue hvordan jeg retter scriptet til således den kun læser de filer den skal.

Mappen "grafik/kampe" indeholder f.eks. følgende billeder:
23-01.jpg
23-02.jpg
23-03.jpg
25-01.jpg
27-01.jpg
27-02.jpg

$kampid vil f.eks. indeholde "23".

Hvordan før jeg mit script til kun at kigge på de billeder der er aktuellt i forhold til $kampid (f.eks ved kampid "23", skal alle billeder med navnene "23-*.jpg" læses?
Avatar billede janpolsen Nybegynder
28. juli 2008 - 21:08 #1
Jeg ville bruge funktionen glob().

Du kan f.eks. lave for at få udskrevet en liste ove de filer du skal bruge:
----------------------------------
foreach (glob("../grafik/kampe/{$kampid}-*.jpg") AS $filename) {
    $path_parts = pathinfo($filename);
    echo $path_parts['dirname'], "\n";
    echo $path_parts['basename'], "\n";
    echo $path_parts['extension'], "\n";
    echo $path_parts['filename'], "\n"; // since PHP 5.2.0
}
----------------------------------


Det inde i foreach-lykken er sakset direkte fra php.net. Det er blot for at du kan få en idé om hvordan det kan bruges.
Avatar billede Slettet bruger
29. juli 2008 - 11:28 #2
Super, tak for hjælpen.

Læg et svar og der er point på vej.

Løsningen blev:
                foreach (glob("$dir/$kampid-*.jpg") AS $filename) {
                    $path_parts  = pathinfo($filename);
                    $ext        = $path_parts['extension'];
                    $pic        = $path_parts['basename'];

                    $ext_length  = strrchr($pic, '.');
                    $billedenavn = substr($pic, 0, -strlen($ext_length));

                    if ($ext == 'jpg' || $ext == 'jpeg') {
                        $navn = "$thumbs/".$billedenavn."_t.".$ext;
                        $sti = "$dir/$pic";
                        if (!file_exists($navn)) Thumb($sti, $navn, $size);
                        $img_size = getimagesize($navn);
                        $billede_array[] = "<img style=\"cursor: hand;\" class=\"image\" border=\"0\" src=\"$navn\" alt=\"$pic\" $img_size[3] onclick=\"java script:galleri('/sider/galleri.php?pic=$billedenavn.jpg&amp;kampid=$kampid')\">";
                    }
                }
Avatar billede janpolsen Nybegynder
29. juli 2008 - 11:45 #3
Du kan også omskrive følgende:
    $ext_length  = strrchr($pic, '.');
    $billedenavn = substr($pic, 0, -strlen($ext_length));

... til:
    $billedenavn = basename($pic, '.'.$ext);

:)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester