检查php文件中是否含有bom的函数
<?php
/*检测并清除BOM*/
if(isset($_GET['dir'])){
$basedir=$_GET['dir'];
}else{
$basedir = '.';
}
$auto = 1;
checkdir($basedir);
function checkdir($basedir){
if($dh = opendir($basedir)){
while(($file = readdir($dh)) !== false){
if($file != '.' && $file != '..'){
if(!is_dir($basedir."/".$file)){
echo "filename: $basedir/$file ".checkBOM("$basedir/$file")." <br>";
}else{
$dirname = $basedir."/".$file;
checkdir($dirname);
}
}
}//end while
closedir($dh);
}//end if($dh
}//end function
function checkBOM($filename){
global $auto;
$contents = file_get_contents($filename);
$charset[1] = substr($contents, 0, 1);
$charset[2] = substr($contents, 1, 1);
$charset[3] = substr($contents, 2, 1);
if(ord($charset[1]) == 239 && ord($charset[2]) == 187 && ord($charset[3]) == 191){
if($auto == 1){
$rest = substr($contents, 3);
rewrite ($filename, $rest);
return "<font color=red>BOM found, automatically removed.</font>";
}else{
return ("<font color=red>BOM found.</font>");
}
} www.jb51.net
else return ("BOM Not Found.");
}//end function
function rewrite($filename, $data){
$filenum = fopen($filename, "w");
flock($filenum, LOCK_EX);
fwrite($filenum, $data);
fclose($filenum);
}//end function
?>
相关推荐
-
php UTF-8、Unicode和BOM问题
一.介绍 UTF-8 是一种在web应用中经常使用的一种 Unicode 字符的编码方式,使用 UTF-8 的好处在于它是一种变长的编码方式,对于 ANSII 码编码长度为1个字节,这样的话在传输大量 ASCII 字符集的网页时,可以大量节约网络带宽. UTF-8签名(UTF-8 signature)也叫做BOM(Byte Order Mark),是UTF编码方案里用于标识编码的标准标记.BOM,是UTF编码方案里用于标识编码的标准标记,在UTF-16里本来是FF FE,变成UTF-8就成了EF
-
PHP 下载文件时自动添加bom头的方法实例
首先弄清楚,什么是bom头?在Windows下用记事本之类的程序将文本文件保存为UTF-8格式时,记事本会在文件头前面加上几个不可见的字符(EF BB BF),就是所谓的BOM(Byte order Mark).不仅限于 记事本保存的文件,只要在文件的开口包含了EF BB BF 几个不可见的字符(十六进制应该是是xEFxBBxBF,用二进制编辑文件可见).这像是一个约定俗成的东西,当系统看到这玩意的时候,就会觉得你这个文件是UTF-8编码的. 如果你的接口是UTF-8的,你需要强制下载一个文件,
-
php中隐形字符65279(utf-8的BOM头)问题
今天在CSDN看到一个php输出空白隐形字符65279的问题,在网上找了下,发下这个65279字符是php用来标记文件是utf-8编码的,输出的时候会一起输出到客户端,导致客户端如果使用ajax得到返回值时,无法匹配字符串. php隐形字符65279解释如下: UTF-8 编码的文件可以分为无 BOM 和 BOM 两种格式. 何谓BOM? "EF BB BF" 这三个字节就叫BOM,全称是"Byte Order Mard".在utf8文件中常用BOM来表明这个文件是
-
PHP批量检测并去除文件BOM头代码实例
如下代码为PHP方式去除当前目录及子目录所有文件BOM信息的代码,新建文件,将其放倒根目录下,然后浏览器访问即可. <?php if (isset($_GET['dir'])) { //设置文件目录 $basedir = $_GET['dir']; } else { $basedir = '.'; } $auto = 1; checkdir($basedir); function checkdir($basedir) { if ($dh = opendir($basedir)) { while
-
PHP实现UTF-8文件BOM自动检测与移除实例
本文实例讲述了PHP实现UTF-8文件BOM自动检测与移除的方法.分享给大家供大家参考.具体实现方法如下: BOM信息是文件开头的一串隐藏的字符,用于让某些编辑器识别这是个UTF-8编码的文件.但PHP在读取文件时会把这些字符读出,从而形成了文件 开头含有一些无法识别的字符的问题. 比如用UTF-8格式保存的生成图片的PHP文件,因为文件头隐藏的BOM信息也被下发,导致生成的 图片数据不对,浏览器无法识别. 要检测一个UTF-8文件是否含有BOM信息,就是检测文件开头的字三个符,是否为0xEF,
-
PHP 下载文件时如何自动添加bom头及解释BOM头和去掉bom头的方法
PHP 下载文件时自动添加bom头,首先需要大家弄清楚,什么是bom头?在Windows下用记事本之类的程序将文本文件保存为UTF-8格式时,记事本会在文件头前面加上几个不可见的字符(EF BB BF),就是所谓的BOM(Byte order Mark). 在utf-8编码文件中BOM在文件头部,占用三个字节,用来标示该文件属于utf-8编码,现在已经有很多软件识别bom头,但是还有些不能识别bom头,比如PHP就不能识别bom头,这也是用记事本编辑utf-8编码后执行就会出错的原因了. 不仅限
-
PHP批量删除、清除UTF-8文件BOM头的代码实例
记得运行代码前先把文件备份一下哦,避免出现失败问题. 代码一: function checkBOM ($filename) { global $auto; $contents = file_get_contents($filename); $charset[1] = substr($contents, 0, 1); $charset[2] = substr($contents, 1, 1); $charset[3] = substr($contents, 2, 1); if (ord($char
-
PHP中遇到BOM、<feff>编码导致json_decode函数无法解析问题
昨天同事遇到一个奇怪的问题,就是以下代码,无法通过JSON校验,也无法通过PHP的json_decode函数解析. 复制代码 代码如下: [ { "title": "", "pinyin": "" } ] 可能聪明的你已经猜到其中包含有不看见的特殊字符,在vim下查看: 复制代码 代码如下: [ { <feff>"title&quo
-
检查php文件中是否含有bom的函数
复制代码 代码如下: <?php /*检测并清除BOM*/ if(isset($_GET['dir'])){ $basedir=$_GET['dir']; }else{ $basedir = '.'; } $auto = 1; checkdir($basedir); function checkdir($basedir){ if($dh = opendir($basedir)){ while(($file = readdir($dh)) !== false){ if($file != '.' &am
-
C++检查某个文件或目录是否存在的函数
本文实例讲述了C++检查某个文件或目录是否存在的函数代码,分享给大家供大家参考.具体实现方法如下: #include <Windows.h> BOOL FileExists(LPCTSTR lpszFileName, BOOL bIsDirCheck) { //试图取得文件属性 DWORD dwAttributes = ::GetFileAttributesA(lpszFileName); if ( INVALID_FILE_ATTRIBUTES == dwAttributes) { retu
-
Java读写文件,在文件中搜索内容,并输出含有该内容的所有行方式
1.问题描述 在一个目录及子目录下查找 TXT或Java文件,从中搜索所有"对象"字样的行. 在D盘中的所有文件中搜索含有"对象"的行. 2.解题思路 先找出D盘下所有文件 再对每个文件中的每行内容进行,进行查找,若含有"对象"两字,输出该行. 3.程序代码 import java.io.File; import java.io.IOException; import java.util.Scanner; public class B { sta
-
C++一个函数如何调用其他.cpp文件中的函数
目录 一个函数调用其他.cpp文件中的函数 看示例 在主文件cpp中调用其他文件函数的方法 直接用 extern方法 总结 一个函数调用其他.cpp文件中的函数 使用VC或VS创建C++项目的时候,会自动产生许多文件夹,其中有一个文件夹->源文件: 在该文件下可以自定义许多.cpp文件,但是需要注意的是这里面的各个文件只能有一个文件中含有main()函数, 而且各个文件中不能使用相同的函数名进行定义: 那么要那么多文件放在项目中有什么用呢? 当然这里C++是提供一个文件调用其他文件中函数的功能的
-
laravel创建类似ThinPHP中functions.php的全局函数
前言 一直觉得ThinPHP中的公共函数是一个很好的设计,因为我们只需要在functions.php中对共用的函数进行封装,然后就可以在全局直接进行调用了.其实Laravel中也有类似的功能的,比如说助手函数,类似于session()等函数,这些助手函数也是全局可以调用的,非常的方便. 下面总结一下,两者之间的差别以及相同点. TP3系列中functions.php文件默认其实是空文件,很好找.我们可以直接封装代码. Laravel5系列中的path/vendor/laravel/framewo
-
在PHP中检查PHP文件是否有语法错误的方法
之前在当当的时候的一个项目中用到了一个简单的模板引擎,其实也是借鉴discuz来做的模板引擎,很简单,它所作的事情就是把一些自定义的标签编译成php代码.已经说了很简单了,所以编译的时候也名优进行模板语法的检查,那么在开发过程中就会出现编译出来的php文件有语法问题,有语法问题没有关系,我修改重新编译一下就好了.首先不能在每次请求的时候都把php模板重新编译一下,会严重影响性能,折中的处理时在每个编译好的php文件末尾检查一下该模板文件是否已经修改过,根据设定的更新频率,如果又需要则重新编译模板
-
批量去除PHP文件中bom的PHP代码
需要去除BOM,就把附件里的tool.php文件放到目标目录,然后在浏览器访问tool.php即可! 复制代码 代码如下: <?php //此文件用于快速测试UTF8编码的文件是不是加了BOM,并可自动移除 $basedir="."; //修改此行为需要检测的目录,点表示当前目录 $auto=1; //是否自动移除发现的BOM信息.1为是,0为否. //以下不用改动 if ($dh = opendir($basedir)) { while (($file = readdir($d
-
Node.JS发送http请求批量检查文件中的网页地址、服务是否有效可用
在node.js中只需要几行代码就可以发送http请求,通过检查statusCode可以判断该网址服务是否有效. 如下代码: var http = require('http') var checkExists = function(urlPath, cb) { var options = { host: '192.168.2.101', port: 8064, path: encodeURI(urlPath)} var req = http.request(options, function(
-
AngularJs中 ng-repeat指令中实现含有自定义指令的动态html的方法
今天用angular写table的时候,遇到了一个问题.在ng-repeat中,含有动态的html,而这些html中含有自定义指令. 因为希望实现一个能够复用的table,所以定义了一个指令myStandTable,指令代码大概如下: var myCommon = angular.module("myCommon",[]); myCommon.directive("myStandTable", function () { return { restrict: &qu
-
ntiIframe.vbs用于批量清除被添加到文件中的恶意代码
AntiIframe.vbs #该脚本是批量挂马程序的逆向,用于批量清除被添加到文件中的恶意代码.记事本打开文件可以修改Pattern参数指定要处理的文件名,文件名之间用|隔开(也支持vbs正则表达式).由于要修改文件,请谨慎的使用(最好先备份文件) #用法: CScript AntiIframe.vbs [处理的路径] [包含清除内容的文件] #例子: CScript AntiIframe.vbs d:\Web d:\lake2.txt 复制代码 代码如下: '----------------
随机推荐
- JS实现可展开折叠层的鼠标拖曳效果
- 跟老齐学Python之永远强大的函数
- ajax视频课件 在线观看地址
- 浅谈javascript事件取消和阻止冒泡
- JS+CSS实现自动改变切换方向图片幻灯切换效果的方法
- 常用Linux Shell进阶部分小结
- JavaScript中用let语句声明作用域的用法讲解
- php使用cookie实现记住用户名和密码实现代码
- C++调用C#的DLL程序实现方法
- VBS教程:正则表达式简介 -正则表达式语法
- MySQL中触发器入门简单实例与介绍
- jquery cookie插件代码类
- 输入文字自动变化宽度的INPUT,带计数(图)
- 使用SmtpClient发送邮件的方法
- 阿里云centos 7下搭建shadowsocks的教程
- java判断今天,昨天,前天,不能用秒间隔的简单实例
- 向当前style sheet中插入一个新的style实现方法
- Spring自动装配与扫描注解代码详解
- 一篇文章快速了解Python的GIL
- 从零开始学习搭建React脚手架项目