Om een bestandsextentie te achterhalen van een geuploade afbeelding gebruik ik een explode functie. Wanneer er echter een bestand met .png.exe wordt geupload werkt deze gewoon aangezien de explode werkt vanaf de eerste . Hoe kan ik de explode laten werken vanaf de laatste . waardoor ik de échte bestandsextentie weet.
Ik zou het dan zo doen:
<?php
/**
* Explodes only the last occurence.
*
* @param string $delimiter The delimiter
* @param string $string The string
*
* @return array
*/
function explode_last($delimiter, $string)
{
$array = explode($delimiter, $string);
$last = array_splice($array, -1);
[size=xsmall]Toevoeging op 05/02/2013 16:41:56:[/size]
Even als toevoeging...
Dat een bestand eindigt op (bijvoorbeeld) png, wil niet zeggen dat het ook daadwerkelijk een png bestand is!
Je doet er goed aan om ook de de mime-type van het bestand te controleren:
Om het lijstje compleet te maken:
<?php
function explode_last($delimiter, $string)
{
preg_match('/(.*)'.preg_quote($delimiter).'(.*?)$/', $string, $matches);
array_shift($matches);
...Ik ben die luxe niet gewend vanuit de oudere taal C
Ik heb daar ook iets aan overgehouden.
Ik begin nogal vlug custom functies te schrijven (vaak met loops) ... om dan later te merken dat die functie al standaard bestaat.
Nu; merk toch op dat veel van die standaard functies intern ook loops gebruiken en naar mekaar wijzen.
Ik ga er wel van uit dat die standaard functies goed geschreven zijn; meer bugs opvangen waar ik niet aan gedacht heb ...
Maar of je beschaamd moet zijn omdat je een functie zelf schrijft; het lijkt me van niet.