filenaam + extensie splitsen

  • Onderwerp starter Onderwerp starter baws
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

baws

Terugkerende gebruiker
Lid geworden
9 apr 2010
Berichten
1.258
ik heb bijvoorbeeld test.jpg nu wil ik graag test en jpg in een aparte variabele.
ik heb het volgende al

PHP:
$path = $row['path'];    /// de volledige document naam dus test.jpg
			
			echo "$path";    ///geeft het path weer dit klopt
			
			$ext = substr(strrchr($path,'.'),1);   ///geeft de extensie weer dit werkt
			echo "<br>ext =   <br>".  $ext."<br>";    ///geeft terug   ext =   jpg   dit klopt
			$naam = $path - '.$ext';    ///dit lukt niet ik probeer hier test.jpg - .jpg
			echo "$naam";
 
Je maakt er een array van, dus moet je het ook als een array uitlezen.
Hij geeft nu alleen de laatste waarde terug bij $ext.

PHP:
$path = $row['path'];    /// de volledige document naam dus test.jpg
            
            echo "$path";    ///geeft het path weer dit klopt
            
            $ext = substr(strrchr($path,'.'),1);   ///geeft de extensie weer dit werkt
            echo "<br>ext =   <br>".  $ext[1]."<br>";    ///geeft terug   ext =   jpg   dit klopt
            $naam = $path - '.$ext[0]';    ///dit lukt niet ik probeer hier test.jpg - .jpg
            echo "$naam";
 
dat is ook de bedoeling want ik lees uit een database img urls en die zet ik om naar een lijst met urls + extensies van die url
 
Je kunt niet iets van een string afhalen mbv min.
Neem in plaats daarvan een substring van de 1e tot de [ [laatste letter] - [aantal letters van extentie] ]
Daar kun je de extentie achter plakken
 
het is al gelukt ik heb gewoon replace gebruikt en dan de extencie die ik al had met een . ervoor met ""veranderen zo heb ik alleen de bestandsnaam.
 
Ik zou de extencie
zo pakken

$ext = last(explode('.', $path)); //Zo maakt het niet uit of de bestandsnaam image.jpg.exe is of image.jpg
 
Oke bedankt dat is inderdaad wel slim.
Maar ik had niet in mijn uitleg toegevoegd dat het om geuploaden bestanden gaan die automatisch een nummer krijgen als naam.
maar wel een goede tip voor een volgend project :)
 
$ext = last(explode('.', $path));
$newFileName = md5(microtime()."enHierVoegJeEenSaltStringIn").'.'.$ext

zo krijg je een 32karakter lange hash die gebaseerd is op de microtime. Dus in theorie zul je geen dubbele namen krijgt.
 
ik heb al unieke namen ;) elke krijgt een naam gelijk aan het unieke id
vraag is opgelost
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan