Dateiendung auslesen mit explode oder alternative?

noOx

Grünschnabel
Hallo,
ich habe ein simples Script geschrieben welches ein hochgeladenes Bild umbenennt und verschiebt, dabei habe ich Probleme die Dateiendung beizubehalten. Sobald ein . im Namen des Bildes ist wird alles dahinter als Dateiendung erkannt. Ich bin mir ziemlich sicher das es mit dem delimiter im explode zusammenhängt, der hier auch ein . ist.

Da ich noch eher ein Anfänger im Bereich PHP bin wollte ich fragen wie kann ich nur alles nach dem >letzten< Punkt..sofern mehrere Vorhanden sind speichern?

Hier der Teil der Probleme macht:
PHP:
$name_old = $_FILES['bild']['tmp_name'];
$name_array = explode('.', $name_old);
 
PHP:
<?php
$name_old   = $_FILES['bild']['tmp_name']; 
$name_array = explode('.', $name_old);

end($name_array); // Zeiger auf letztes Element in Array setzen
$i = key($name_array); // Schluessel des letzten Elements ermitteln

$suffix = $name_array[$i]; // Dateiendung
unset($name_array[$i]); // Letztes Element loeschen

$filename = implode('.', $name_array); // Dateiname
?>
 
Am besten du gehst beim Upload einfach streng vor, damit meine ich, dass du natürlich ein Array hast worin eine Dateiformate sind die auch hochgeladen werden dürfen.

PHP:
$error01 = '';
$types= array('jpg','gif');

$filename = 's38.id._3d..jpg'; // bei dir $_FILES['up_form']['name']

$filetype = substr($filename,-3,3);

$error01 .= !in_array($filetype) ? 'Das Dateiformat darf nicht hochgeladen werden!':'';

if(strlen($error01)==0){ /* Upload.. */ }

//edit..

war wohl wer schneller^^
 
Wäre es nicht wesentlich einfacher das exploden weg zu lassen und stattdessen

PHP:
 substr (strrchr ($name_old, "."), 1 );
 
Ich hätt noch eine wenn du umbedingt was explodieren lassen willst ;)

PHP:
$dateiEndung = $name_array[count($name_array) - 1];
 
Das ging ja schnell & soviele Antworten :)
Habe die Variante von "einfach nur crack" gewählt, die nun auch einwandfrei funktioniert. Musste nur tmp_name in name umändern, da sonst immer .tmp als Dateiendung angezeigt wurde.
 
Das ist ja mal kurz und knackig :D Was es in PHP alles gibt, muss noch viel lernen. Hab jetzt mal deinen Code genommen und der funktioniert auch wunderbar..nur das es viel übersichtlicher wird :D


Danke!
 
Zurück