很多站长朋友们都不太清楚php判断文件开头,今天小编就来给大家整理php判断文件开头,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 php检测文件是否有bom头代码 2、 PHP读取文件前几个字节 判断文件类型函数 3、 php 如何产看某个文件的某一行是否是以#号开头的 php检测文件是否有bom头代码$contents=file_get_contents($filename);
$charset[1]=substr($contents, 0, 1);
$charset[2]=substr($contents, 1, 1);
$charset[3]=substr($contents, 2, 1);
$hasBOM = ord($charset[1])==239 ord($charset[2])==187 ord($charset[3])==191;
原理:
类似WINDOWS自带的记事本等软件,在保存一个以UTF-8编码的文件时,会在文件开始的地方插入三个不可见的字符(0xEF 0xBB 0xBF,即BOM)。它是一串隐藏的字符,用于让记事本等编辑器识别这个文件是否以UTF-8编码。对于一般的文件,这样并不会产生什么麻烦。但对于 PHP来说,BOM是个大麻烦。
PHP并不会忽略BOM,所以在读取、包含或者引用这些文件时,会把BOM作为该文件开头正文的一部分。根据嵌入式语言的特点,这串字符将被直接执行(显示)出来。由此造成即使页面的 top padding 设置为0,也无法让整个网页紧贴浏览器顶部,因为在html一开头有这3个字符呢!
window编辑器如果保存为utf8文件就会帮你加上BOM头,以告诉其他编辑器以utf8来显示字符
但是在网页上并不需要添加BOM头识别,因为网页上可以使用 head头 指定charset=utf8告诉浏览器用utf8来解释.但是你用window自动的编辑器,编辑,然后有显示在网页上这样就会显示出0xEF 0xBB 0xBF这3个字符。
这样网页上就需要去除0xEF 0xBB 0xBF,可以使用editplus 选择不带BOM的编码,这样就可以去除了
PHP读取文件前几个字节 判断文件类型函数PHP读取文件前几个字节 判断文件类型函数
/**
* 读取文件前几个字节 判断文件类型
*
* @return String
*/
function checkTitle($filename) {
$file = fopen($filename, 'rb');
$bin = fread($file, 2); //只读2字节
fclose($file);
$strInfo = @unpack('c2chars', $bin);
$typeCode = intval($strInfo['chars1'].$strInfo['chars2']);
$fileType = '';
switch ($typeCode)
{
case 7790:
$fileType = 'exe';
break;
case 7784:
$fileType = 'midi';
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'.$typeCode;
}
//Fix
if ($strInfo['chars1']=='-1' $strInfo['chars2']=='-40' ) {
return 'jpg';
}
if ($strInfo['chars1']=='-119' $strInfo['chars2']=='80' ) {
return 'png';
}
return $fileType;
}
php 如何产看某个文件的某一行是否是以#号开头的$f=file('文件地址');
$line= 2;/*要检验的行号2(表示第三行)*/;
if(preg_match('/^\#/',$f[$line])){
echo "你检查的行号是#开头!";
} else{
echo "你检查的行号不是#开头!";
}
关于php判断文件开头的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。
查看更多关于php判断文件开头 php 判断是目录还是文件的详细内容...