批量清除BOM头

(2012-03-05 13:28:30)

标签:

杂谈

 
有些php文件由于不小心保存成了含bom头的格式而导致出现一系列的问题。以下是批量清除bom头的代码,复制代码,保存成.php文件,放在想执行的文件夹,运行就可以了
  1. <?php
  2. if (isset ( $_GET ['dir'] )) { //config the basedir
  3. $basedir = $_GET ['dir'];
  4. } else {
  5. $basedir = '.';
  6. }
  7. $auto = 1;
  8. checkdir ( $basedir );
  9. function checkdir($basedir) {
  10. if ($dh = opendir ( $basedir )) {
  11. while ( ($file = readdir ( $dh )) !== false ) {
  12. if ($file != '.' && $file != '..') {
  13. if (! is_dir ( $basedir . "/" . $file )) { // 如果是文件
  14. echo "filename: $basedir/$file " . checkBOM ( "$basedir/$file" ) . " <br>";
  15. } else {
  16. $dirname = $basedir . "/" .$file; // 如果是目录
  17. checkdir ( $dirname ); // 递归
  18. }
  19. }
  20. }
  21. closedir ( $dh );
  22. }
  23. }
  24. function checkBOM($filename) {
  25. global $auto;
  26. $contents = file_get_contents ( $filename );
  27. $charset [1] = substr ( $contents, 0, 1 );
  28. $charset [2] = substr ( $contents, 1, 1 );
  29. $charset [3] = substr ( $contents, 2, 1 );
  30. if (ord ( $charset [1] ) == 239 && ord ( $charset [2] ) == 187 && ord ( $charset [3] ) == 191) { // BOM 的前三个字符的ASCII 码分别为 239 187 191
  31. if ($auto == 1) {
  32. $rest = substr ( $contents, 3 );
  33. rewrite ( $filename, $rest );
  34. return ("<font color=red>BOM found, automatically removed.</font>");
  35. } else {
  36. return ("<font color=red>BOM found.</font>");
  37. }
  38. } else
  39. return ("BOM Not Found.");
  40. }
  41. function rewrite($filename, $data) {
  42. $filenum = fopen ( $filename, "w" );
  43. flock ( $filenum, LOCK_EX );
  44. fwrite ( $filenum, $data );
  45. fclose ( $filenum );
  46. }

批量清除BOM头的更多相关文章

  1. php 批量检测bom头,去除bom头工具

    <?php //有些php文件由于不小心保存成了含bom头的格式而导致出现一系列的问题.以下是批量清除bom头的代码 if (isset ( $_GET ['dir'] )) { //confi ...

  2. Linux下查找包含BOM头的文件和清除BOM头命令 2014-08-16 12:30:50

    Linux下查找包含BOM头的文件和清除BOM头命令 2014-08-16 12:30:50 分类: 系统运维 查找包含BOM头的文件,命令如下: 点击(此处)折叠或打开 grep -r -I -l ...

  3. 批量去BOM头 遍历目录及子文件,文件夹 PHP源码

    任意php文件,把最后一行替换成自己的目录 即可 <?php class KillBom {     public static $m_Ext = ['txt', 'php', 'js', 'c ...

  4. linux下查找包含BOM头的文件和清除BOM头命令

    查找包含BOM头的文件,命令如下:   grep -r -I -l $'^\xEF\xBB\xBF' ./   这条命令会查找当前目录及子目录下所有包含BOM头的文件,并把文件名在屏幕上输出.   但 ...

  5. Linux 查找bom头文件,清除bom头命令

    1.查找bom头文件 grep -r -I -l $'^\xEF\xBB\xBF' ./ 2.替换bom头文件 find . -type f -exec sed -i 's/\xEF\xBB\xBF/ ...

  6. 清除BOM头源码

    BOM: Byte Order Mark UTF-8 BOM又叫UTF-8 签名,其实UTF-8 的BOM对UFT-8没有作用,是为了支援UTF-16,UTF-32才加上的BOM,BOM签名的意思就是 ...

  7. PHP批量去除bom头代码的小工具

    在 aitecms 群里有网友抱怨了好几天说本地的验证码一直无法显示,后来听说解决了,问其如何解决的,说是去除了文件 bom 就好了.后来百度到一篇文章也说 dedecms 的验证码不能显示,某次解决 ...

  8. php批量检测和去掉bom头(转)

    <?php //有些php文件由于不小心保存成了含bom头的格式而导致出现一系列的问题.以下是批量清除bom头的代码 if (isset ( $_GET ['dir'] )) { //confi ...

  9. 什么是BOM头,BOM头有什么影响,怎么去掉BOM头

    什么是bom头? 在utf-8编码文件中BOM在文件头部,占用三个字节,用来标示该文件属于utf-8编码,现在已经有很多软件识别bom头,但是还有些不能识别bom头,比如PHP就不能识别bom头,这也 ...

随机推荐

  1. Kafka学习笔记(一):概念介绍

    Kafka是一个开源的,分布式的,高吞吐量的消息系统.随着Kafka的版本迭代,日趋成熟.大家对它的使用也逐步从日志系统衍生到其他关键业务领域.特别是其超高吞吐量的特性,在互联网领域,使用越来越广泛, ...

  2. angular如何在一个网页中同时启动两个app?

    AngularJS深入 这个系列真不错,是我想学的深入内容. http://syaning.com/2015/07/16/dive-into-angular-1/ 一般情况下,一个页面中只有一个应用, ...

  3. Xamarin.Android开发实践(九)

    Xamarin.Android之ActionBar与菜单 一.选项卡 如今很多应用都会使用碎片以便在同一个活动中能够显示多个不同的视图.在 Android 3.0 以上的版本中,我们已经可以使用Act ...

  4. jquery日期格式化

    function dateFormat(date, format){     date = , ) / ), ) {                 v = );             }      ...

  5. NHibernate初探(1)

    1 NHibernate是ORM的一种. 是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术.ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中.本质上 ...

  6. hdu 4751(dfs染色)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4751 思路:构建新图,对于那些两点连双向边的,忽略,然后其余的都连双向边,于是在新图中,连边的点是能不 ...

  7. 电赛菜鸟营培训(三)——STM32F103CB之串口通信

    一.串口通信概念 1.缩写 USART:Universal Synchronous/Asynchronous Receiver/Transmitter 通用同步/异步接收和发送器 2.用处 (1)同步 ...

  8. aggregateByKey

    def seq(a:Int, b:Int) : Int ={ math.max(a,b) } def comb(a:Int, b:Int) : Int ={ a + b } val data = sc ...

  9. Hark的数据结构与算法练习之圈排序

    算法说明 圈排序是选择排序的一种.其实感觉和快排有一点点像,但根本不同之处就是丫的移动的是当前数字,而不像快排一样移动的是其它数字.根据比较移动到不需要移动时,就代表一圈结束.最终要进行n-1圈的比较 ...

  10. IoC模式(转)

    IoC模式 1.依赖 依赖就是有联系,有地方使用到它就是有依赖它,一个系统不可能完全避免依赖.如果你的一个类或者模块在项目中没有用到它,恭喜你,可以从项目中剔除它或者排除它了,因为没有一个地方会依赖它 ...