【发布时间】:2011-11-25 16:37:44
【问题描述】:
我有一个上传脚本,我需要检查文件扩展名,然后根据该文件扩展名运行单独的函数。有人知道我应该使用什么代码吗?
if (FILE EXTENSION == ???)
{
FUNCTION1
}
else if
{
FUNCTION2
}
【问题讨论】:
标签: php
我有一个上传脚本,我需要检查文件扩展名,然后根据该文件扩展名运行单独的函数。有人知道我应该使用什么代码吗?
if (FILE EXTENSION == ???)
{
FUNCTION1
}
else if
{
FUNCTION2
}
【问题讨论】:
标签: php
pathinfo 就是你要找的东西
$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;
}
【讨论】:
"" 用于文件,然后以. 结尾。 NULL 没有文件扩展名。您可以拆分 case 语句,但对于示例,我只是将它们组合在一起。
$info = pathinfo($pathtofile);
if ($info["extension"] == "jpg") { .... }
【讨论】:
echo "$info" 一起执行时,它总是返回值数组。这是为什么呢?
对于 php 5.3+ 你可以使用 SplFileInfo() 类
$spl = new SplFileInfo($filename);
print_r($spl->getExtension()); //gives extension
此外,由于您正在检查文件上传的扩展名,我强烈建议您使用 mime 类型。
对于 php 5.3+ 使用 finfo 类
$finfo = new finfo(FILEINFO_MIME);
print_r($finfo->buffer(file_get_contents($file name));
【讨论】:
$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 中“针”和“草垛”的顺序。
$path = 'image.jpg';
echo substr(strrchr($path, "."), 1); //jpg
【讨论】:
$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 在大多数操作系统中绝对是一个有效的文件名。
$file = $_FILES["file"] ["tmp_name"];
$check_ext = strtolower(pathinfo($file,PATHINFO_EXTENSION));
if ($check_ext == "fileext") {
//code
}
else {
//code
}
【讨论】: