07月16, 2018

批量查找包含BOM头的文件并清除BOM头

一、Linux下查找BOM头命令为

grep -r -I -l $'^\xEF\xBB\xBF' ./

注:\xef\xbb\xbf是UTF8 BOM的16进制表示

PHP检测是否存在BOM头方法:

$url = 'http://www.xxx.com';
$contents=file_get_contents($url);
$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;
 
var_dump($hasBOM);


二、删除当前目录及所有子目录下的BOM头方法为(慎用)

find . -type f -exec sed -i 's/\xEF\xBB\xBF//' {} \;

另外一种方法:

echo -ne '\xef\xbb\xbf123456' | awk '{if(NR==1)sub(/^\xef\xbb\xbf/,""); print}'


本文链接:https://lxyit.com/article/show/143.html

-- EOF --