linux批量查找bom头并清除bom头

赞赏 2016-01-05

前段时间对接支付宝,支付宝回调我们用户支付结果,如果我们收到了回调,需要返回给支付宝"success",如果不返回"success",支付宝会在24小时内陆续回调我们8次。问题就出现在返回"success"上,程序中已经返回啦,log中也记录了"success",可支付宝还是回调了我们多次。线上咨询了支付宝技术客服,给的回复是,我们返回的数据中包含BOM头。


清除BOM头

什么是bom头? bom全称是:byte order mark,汉语意思是标记字节顺序码。 

BOM头是放在UTF-8编码的文件的头部的,占用三个字节,用来标识该文件属于UTF-8编码 

 常见的bom头有:

UTF-8 ║ EF BB BF 

UTF-16LE ║ FF FE (小尾) 

UTF-16BE ║ FE FF (大尾) 

UTF-32LE ║ FF FE 00 00 

UTF-32BE ║ 00 00 FE FF 

对于一般的文件,这样并不会产生什么麻烦。但对于 PHP来说,BOM是个大麻烦。 

PHP并不会忽略BOM,所以在读取、包含或者引用这些文件时,会把BOM作为该文件开头正文的一部分。根据嵌入式语言的特点,这串字符将被直接执行(显示)出来。由此造成某些页面顶部有一行空格或者像支付宝这样会多收到三个隐藏字符。


linux批量查找含bom头的php文件 

[root@test06 test]# grep -r -I -l $'^\xEF\xBB\xBF' ./ | grep .php 

./public/utf8bom3.php 

./public/utf8bom2.php 

[root@test06 test]# grep -r -I -l $'^\xEF\xBB\xBF' ./ 

./public/utf8bom.txt 

./public/utf8bom3.php 

./public/utf8bom2.php


批量删除 

grep -r -I -l $'^\xEF\xBB\xBF' ./ | grep .php | xargs sed -i 's/\xEF\xBB\xBF//'


用PHP也可以去除文件BOM头 

注:EF BB BF对应的十进制分别是 239,187,191 

function remove_bom ($filename) {

    $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) { 

        $rest= substr($contents, 3);  //截取后重新写入文件即可        

        return;

     }

}


登陆后阅读全文
阅读 2549 赞赏 0 有用 3 没用 0 收藏 0 分享

   


作者声明:本篇文章系本人原创,欢迎分享,但未经许可,谢绝转载。

0 条留言

吉小小普的头像

吉小小普

哈哈哈哈哈哈哈哈

相关文章

Linux php-fpm报错:allow_call_time_pass_reference

如何配置php显示错误信息?

6款程序员必备的开源中文汉字拼音转换及处理工具 (PHP Java .net)

Linux 服务器如何隐藏 PHP 版本号?

PHP Fatal error: Allowed memory size of bytes exhausted

PHP 程序无法识别短标签

改了php.ini中的open_basedir仍报错open_basedir restriction in effect

原来这条命令可以让我们快速找到php.ini的位置

Linux Crontab 执行 PHP 程序失败

window mac linux 如何安装 Composer?

有料推荐

这世界欠我一个这样的老公!

高校学生模仿“世界名画”摆拍,可以说是戏精本精了

iPhone X 跌破发行价,苏宁200亿入股恒大 | 财经日日评

果然是高手!这次在日本,特朗普竹杠敲得不是一般狠

资深黄牛现身说法:iPhone X价格秒变不停,就像炒股一样

长一样的双胞胎也能识别?蚂蚁金服发布「眼纹识别」技术

苏联是怎么被阿富汗拖垮的?

美团或入局「分时租赁」共享汽车,王兴要大笔投入「泛出行」领域了? | 36氪独家

你或许被“一盘番茄炒蛋”刷屏了,但有人辛酸,有人质疑

iPhone X发售前夜,黄牛与苹果公司的不安

他的文章

这款微信小程序,据说能识别(单身)狗

这个网站提供与 狗(dog) 相关的API接口

呕心沥血良心推荐 珍藏的Chrome插件

介绍三个免费的IP地址查询接口 | (淘宝 新浪 126)

网站请求日志中的 article-expand tooltip_arrow article-contract 是什么

网络请求日志中的 apple-touch-icon.png 是什么?

又拍云上传图片503 put file capture error | put file to fs error

链接里的isappinstalled=0与isappinstalled=1有什么区别?|微信分享

微信公众号开发遇到 redirect uri 参数错误 和 config:invalid url domain

微信invalid credential access_token is invalid or not latest

手机扫一扫
分享文章