Avatar billede cpawdk Nybegynder
31. juli 2004 - 13:54 Der er 9 kommentarer og
2 løsninger

strip tegn i output fra et array

Hej.

Jeg har et array med nogle filnavne i:

if ($handle = opendir('.')) {
    while (false !== ($file = readdir($handle))) {
        if ($file != "." && $file != "..") {
            $arr[] = "$file";
        }
    }
    closedir($handle);
}

Nu hedder $arr[3] f.eks. "filnavn.jpg". Hvordan for jeg fjernet endelsen, altså de sidste 3 tegn, så den kun hedder "filnavn." ?

Mvh Christian
Avatar billede Slettet bruger
31. juli 2004 - 14:01 #1
Utestet, men følgende skulle virke.

if ($handle = opendir('.')) {
    while (false !== ($file = readdir($handle))) {
        if ($file != "." && $file != "..") {
                list($one, $two) = end(explode(".", $file));
                $arr[] = "$one";
        }
    }
    closedir($handle);
}
Avatar billede coderdk Praktikant
31. juli 2004 - 14:06 #2
substr( $arr[3], 0, strrpos($arr[3], '.' ) + 1 );
Avatar billede erikjacobsen Ekspert
31. juli 2004 - 14:06 #3
Hvis jeg må drille lidt, hvad så hvis filen hedder "abc.def.jpg"
Avatar billede coderdk Praktikant
31. juli 2004 - 14:07 #4
eller hvis du er sikker på at der kun er 3 tegn i filens extension: substr( $arr[3], 0, -3 );
Avatar billede erikjacobsen Ekspert
31. juli 2004 - 14:07 #5
Ok - svar nummer 2 klarer så det ;)  Men hvad hvis filen så hedder "abcdef" ?
Avatar billede coderdk Praktikant
31. juli 2004 - 14:08 #6
Så skal den vel hedde "abc.def." ? Dens extension skal vel bare væk, mens punktummet bliver?
Avatar billede coderdk Praktikant
31. juli 2004 - 14:09 #7
if ( strpos( $arr[3], '.' ) ) $arr[3] = substr( $arr[3], 0, strrpos($arr[3], '.' ) + 1 );
Avatar billede coderdk Praktikant
31. juli 2004 - 14:10 #8
Hmm lidt bedre:

if ( is_number( strpos( $arr[3], '.' ) ) ) $arr[3] = substr( $arr[3], 0, strrpos($arr[3], '.' ) + 1 );
Avatar billede cpawdk Nybegynder
31. juli 2004 - 14:14 #9
Det virker ikke umiddelbart.

<?
if ($handle = opendir('.')) {
    while (false !== ($file = readdir($handle))) {
        if ($file != "." && $file != "..") {
                list($one, $two) = end(explode(".", $file));
                $arr[] = "$one";
        }
    }
    closedir($handle);
}
echo $arr[3]; // Dette giver bare "J", altså det første bogstav efter punktummet..
?>
Avatar billede cpawdk Nybegynder
31. juli 2004 - 14:15 #10
det skal lige siges, at jeg er helt sikker på at fil endelsen altid er på 3 tegn
Avatar billede cpawdk Nybegynder
31. juli 2004 - 14:35 #11
så virker det. tak :)
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