I have an upload script that I need to check the file extension, then run separate functions based on that file extension. Does anybody know what code I should use?
if (FILE EXTENSION == ???)
{
FUNCTION1
}
else if
{
FUNCTION2
}
pathinfo is what you're looking for
$file_parts = pathinfo($filename);
switch($file_parts['extension'])
{
case "jpg":
break;
case "exe":
break;
case "": // Handle file extension for files ending in '.'
case NULL: // Handle no file extension
break;
}
"" is for files then end with .. NULL is for no file extension. You could break out the case statement, but for the example I just group them together.pathinfo($pathtofile, PATHINFO_EXTENSION)$info = pathinfo($pathtofile);
if ($info["extension"] == "jpg") { .... }
echo "$info" it always returns the value Array. Why is this?$file_parts = pathinfo($filename);
$file_parts['extension'];
$cool_extensions = Array('jpg','png');
if (in_array($file_parts['extension'], $cool_extensions)){
FUNCTION1
} else {
FUNCTION2
}
in_array.For php 5.3+ you can use the SplFileInfo() class
$spl = new SplFileInfo($filename);
print_r($spl->getExtension()); //gives extension
Also since you are checking extension for file uploads, I highly recommend using the mime type instead..
For php 5.3+ use the finfo class
$finfo = new finfo(FILEINFO_MIME);
print_r($finfo->buffer(file_get_contents($file name));
$original_str="this . is . to . find";
echo "<br/> Position: ". $pos=strrpos($original_str, ".");
$len=strlen($original_str);
if($pos >= 0)
{
echo "<br/> Extension: ". substr($original_str,$pos+1,$len-$pos) ;
}
this . is . to . find is absolutely a valid file name in most operating systems.