Dateinamen bearbeiten

gilldex

Mitglied
Hallo zusammen

Ich lese mit einem Script die Dateinamen aus einem Ordner aus und den Namen brauche ich weiter im Script wieder. Mein Problem ist nur dass der Dateiname hald am Schluss .jpg als Endung hat was sich nicht so gut macht. Wie kann ich den Dateinamen mit echo ausgeben ohne das .jpg am Schluss?

Mit folgendem Code wird das Verzeichnis gelesen:

$mydir = getcwd()."/gallery";
$verz = dir($mydir);
while($entry=$verz->read()){
if($entry != "." && $entry != ".."){
$dateinamen[] = $entry;
}
}
$verz->close();

Ich möchte den Dateinamen ohne .jpg in einer Variabel haben, doch wie bekomm ich das hin? Bin leider noch relativ neu was PHP angeht.

Danke euch!
 
Das wäre eine Variante
Du teilst mit explode den Dateinamen am Punkt und erhälst somit 2 arrays.
Das erste $name[0] enthält den Namen vor dem Punkt und das Zweite enthät die Endung hinter dem Punkt.
PHP:
<?php
$name = explode(".",$dateiname[]);
print $name[0];
?>
 
Und was machst du wenn der Dateiname bereits einen Punkt enthält?
Im Windof funktioniert dies.
Habs zwar noch nie ausprobiert wie sich das Upload Script verhaltet wenn man ein solche Datei hochladen will.

Würde mal an ein Versuch ankommen.:)

Grz

scan
 
Danke erstmal für die Hilfe.

Wenn mir jetzt noch wer sagen kann warum die neue Variabel nicht im "title" des Bildes angezeigt wird ist der Held. Ich schaffe es nämlich einfach nicht.

PHP:
//verzeichnis lesen
$mydir = getcwd()."/gallery";
$verz = dir($mydir);
while($entry=$verz->read()){
        if($entry != "." && $entry != ".."){
        $dateinamen[] = $entry;
    }
}
$verz->close();

//Ausgabe 
rsort($dateinamen);
$name = substr($dateiname,strlen($dateiname),-3);
$run = 0;
while(list($key, $val) = each($dateinamen)) { 
    if(substr($val, -4) == ".jpg" or substr($val, -4) == ".JPG") 
    { 
        echo "<a href=\"gallery/".$val."\" style=\"margin:11pt;\" rel=\"lightbox[roadtrip]\" title=\"".$name ."\"><img src=\"gallery/thumb/".$val ."\" style=\"border: 3px solid #4A4A4A
;\">"; 
        $run++; 
        if($run == 4) { 
            echo "<br /><br />"; 
            $run = 0; 
        } 
    } 
}
 
Es funktioniert nicht weil $dateinamen ja ein Array ist, und substr eine string Funktion ist.
PHP:
foreach($dateinamen as $dateiname) {
$name[] = substr($dateiname,strlen($dateiname),-3); 
}

Nun hättest du die gekürzten Dateinamen in $name drin stehen.
 
Ja da hast du recht!
War ein überlegungsfehler von mir...
Das Beispiel von Iches sollte jetzt eigentlich funktionieren!
 
Ich würde ehrlich gesagte keine feste Länge der Endung vorgeben, da dann z. B. bei jpeg Dateien oder ähnlichem ein Fehler auftritt bzw. nicht das gewünschte Ergebnis.

Dies hier arbeitet z. B. unabhängig von der Länge

PHP:
<?php

$test = "hans.peter.jpeg";

$file = substr($test, 0, -strlen(strrchr($test, ".")));

?>
 
Zurück