旗下导航:搜·么
当前位置:网站首页 > PHP问题 > 正文

php推断文件是不是为txt文件【php题目】

作者:搜搜PHP网发布时间:2019-11-26分类:PHP问题浏览:116


导读:能够运用pathinfo要领来经由过程后缀名举行推断文件范例。代码示例:(引荐进修:PHP视频教程)/***猎取文件后缀(假如文件名为11.11,11不...
能够运用 pathinfo要领来经由过程后缀名举行推断文件范例。

代码示例:(引荐进修:PHP视频教程)

/** 
	* 猎取文件后缀(假如文件名为11.11,11不是后缀,会默许11为后缀)
	* $file string 文件途径或许文件名
	*/
	function get_extension($file){
		return pathinfo($file, PATHINFO_EXTENSION);
	}

申明: pathinfo细致运用要领,能够检察php手册。然则该要领仅仅只能依据文件后缀来推断文件范例,假如html后缀的文件,被修改成.php的后缀以后,读取到的则是php范例文件。

$_FILES

假如是php上传文件,则能够用$_FILES[‘uploadfile’][‘type’]来猎取文件范例,然则一样会存在和pathinfo一样的题目,该要领仅仅只能依据文件后缀来推断文件范例。

php Fileinfo 猎取文件MIME范例(finfo_open)

<?php
	$finfo = finfo_open(FILEINFO_MIME); // 返回 mime 范例
    $filename = '.\Uploads\2.zip';
    var_dump(finfo_file($finfo, $filename));
    finfo_close($finfo);
    die;

申明: 假如文件存在则返回文件范例,不然返回false。该要领须要php5.3.0+版本。能够依据返回的效果来推断是什么范例的文件。该要领即便是原文件被悛改后缀,已然能够读到原文件范例。

读取文件头六个字节作为推断。

<?php
// 官方示例
function minimime($fname) {
    $fh=fopen($fname,'rb');
    if ($fh) { 
        $bytes6=fread($fh,6);
        fclose($fh); 
        if ($bytes6===false) return false;
        if (substr($bytes6,0,3)=="\xff\xd8\xff") return 'image/jpeg';
        if ($bytes6=="\x89PNG\x0d\x0a") return 'image/png';
        if ($bytes6=="GIF87a" || $bytes6=="GIF89a") return 'image/gif';
        return 'application/octet-stream';
    }
    return false;
}
// 将文件头4个字节转换成16进制推断
function fileType($filename) {
    // 读取文件的前4个字节,依据硬编码推断
    $file = fopen ( $filename, "rb" );
    $strFile = fread ( $file, 4 ); //只读文件头4字节
    fclose ( $file );
    $strInfo = @unpack ( "C4chars", $strFile );  
    //dechex(),把十进制转换为十六进制。  
    $code = dechex ( $strInfo ['chars1'] ) .   
            dechex ( $strInfo ['chars2'] ) .   
            dechex ( $strInfo ['chars3'] ) .   
		    dechex ( $strInfo ['chars4'] );  
    $type = '';  
    switch ($code) //硬编码值查表  
    {
        case "504b34" :  
            $type = 'application/zip; charset=binary';  
            break;
        case "89504e47" :
            $type = 'image/png; charset=binary';  
            break; 
        default :
            $type = false;  
            break;
    }
    return $type;
}

这个要领有缺点,差别范例的文件,文件头4个字节可能会雷同,而且部份文件范例示意文件范例的字符串,少于4个字节。能够斟酌将要领三和要领四连系运用。

更多PHP相干技术文章,请接见PHP图文教程栏目举行进修!

以上就是php推断文件是不是为txt文件的细致内容,更多请关注ki4网别的相干文章!

标签:php