获取文件扩展名 方法比较

2012-10-15   来源:站长日记       编辑:沧海桑田   类别:PHP 教程    转载到:    发表评论

要正确获取文件的扩展名,要能处理以下三种特殊情况, 1.没有文件扩展名,2.路径中包含了字符. 3.路径中包含了字符.,但文件没有扩展名

PHP中获取文件扩展名的 方法基本上就以下这几种方式:1 方法function get_extension($file){ substr(strrchr($file, '.'), 1); }2 方法function get_extension($file){ return substr($file, strrpos($file, '.')+1);}3 方法function get_extension($file){ return end(explode('.', $file));}4 方法function get_extension($file){ $info = pathinfo($file);return $info['extension']; }5 方法function get_extension($file){ return pathinfo($file, PATHINFO_EXTENSION);}前四 方法都有各自的缺点。正确获取文件的扩展名,要能处理以下三种特殊情况。1.没有文件扩展名2.路径中包含了字符.,如/home/test.d/test.txt3.路径中包含了字符.,但文件没有扩展名。如/home/test.d/test明显方法1、2不能处理三种情况,方法3不能正确处理一三种情况。方法4可以正确处理,但是在不存在扩展名时,会发出一个警告。只有方法5 方法才是最正确的方法顺便看一下pathinfo方法。官网介绍:$file_path = pathinfo('/www/htdocs/your_image.jpg');echo "$file_path ['dirname']n";echo "$file_path ['basename']n";echo "$file_path ['extension']n";echo "$file_path ['filename']n"; // only in PHP 5.2+返回一个数组,包含最多四个元素,但是并不会一直有四个,在没有扩展名的情况下,就不会有extension元素存在,所以4 方法才会发现警告。但是phpinfo还支持二个参数。可以传递一个常量,指定返回某一部分的数据:PATHINFO_DIRNAME - 目录PATHINFO_BASENAME - 文件名(含扩展名)PATHINFO_EXTENSION - 扩展名PATHINFO_FILENAME - 文件名(不含扩展名,PHP>5.2)这四个常量的值分别是1、2、4、8,以下方法提供参考,因为在读文件,可能占服务器资源$tempfile = @fopen($img, "rb");$bin = fread($tempfile, 2); //只读2字节 fclose($tempfile);$strInfo = @unpack("C2chars", $bin);$typeCode = intval($strInfo['chars1'] . $strInfo['chars2']);$fileType = '';switch ($typeCode){ // 6677:bmp 255216:jpg 7173:gif 13780:png 7790:exe 8297:rar 8075:zip tar:109121 7z:55122 gz 31139case '255216':  $fileType = 'jpg';  break;case '7173':  $fileType = 'gif';  break;case '13780':  $fileType = 'png';  break;default:  $fileType = 'unknown';}

253

1
253|1 | 鲜花 VS 砸蛋 | 838阅读 0评论
 
不想登录?直接点击发布即可作为游客留言。
昵称  邮箱 网站 验证码 = 1+1