您的位置:

php取后缀,php获取后缀

本文目录一览:

PHP 没有后缀名的文件怎么获取后缀

我给你思路吧

首先没有后缀,那只能通过文件头来判断了

function getFileType($file){

if(!empty($file)){

//打开文件

$filehead = fopen($file,'r');

//读取文件2字节

$bin = fread($filehead, 2);

fclose($filehead);

//二进制字符串对数据进行解包

$data = unpack('C2chars', $bin);

$type_code = intval($data['chars1'].$data['chars2']);

    switch ($type_code) {

        case 7790: 

            $fileType = 'exe';

            break;

        case 7784: 

            $fileType = 'midi';

            break;

        case 8075: 

            $fileType = 'zip';

            break;

        case 8297: 

            $fileType = 'rar';

            break;

        case 255216: 

            $fileType = 'jpg';

            break;

        case 7173: 

            $fileType = 'gif';

            break;

        case 6677: 

            $fileType = 'bmp';

            break;

        case 13780: 

            $fileType = 'png';

            break;

        default: 

            $fileType = 'unknown';

            break;

    }

    return $fileType;

    

}

-

php截取文件扩展名

解决楼主的问题的方法就是,分开写代码,即:

$filearr

=

split(".",$filename);

$filetype

=

end($filearr);

split

函数用来分割字符串的时候,基本等同于函数

preg_grep,分割表达式可以是一个正则表达式,也可以是一个普通字符串,所以本身的执行效率很低,这一点你要记得……

所以,实现你现在的这个需求的话,最好用explode函数,使用普通字符作为分割表达式……

但是也的确如楼上所说,split

函数(PHP里)已经弃用,你可以使用

preg_match、preg_match_all

、preg_grep

等使用正则表达式作为分割的函数来替代。

就整个你的需求而言,你的思路还不很好,当一个文件名是【a.b.c.d.e.f.g.php】的时候,程序要浪费多余的资源来分割其实你不用的a、b、c……,

所以要简单满足你取后缀名的需求的代码应该是:

$filetype=substr(strrchr($filename,'.'),1);

此外还有:$path_info

=

pathinfo($filename);

$filetype

=

$path_info['extension'];

其实不是很推荐。

下面比较一下它们各自的执行效率:

设文件名是:aaa.bb.php、循环执行10000次;执行10次取平均值:

split

+

end

:0.067644s

explode

+

end

:0.016251s

pathinfo

+

['extension']

:0.018983s

strrchr

+

substr

:0.008611s

【以上文字现场版纯手敲,2012-2-25

10:41,谢谢】

php有哪些常用的后缀

php3,pht,phtml,phps等后缀如果服务器是apach的话配置文件是可以添加这些php别名进行解析的