诡异的 BOM 字符 \ufeff
2018-05-26 16:22
176 查看
将一下程序保存后放到服务器,用浏览器访问一次即可。默认扫描脚本所在的目录及子目录,可手动设定基目录,例如 ?
dir=./
dir=./../
dir=./../test
dir=./
dir=./../
dir=./../test
<?php header('content-Type: text/html; charset=utf-8'); if (isset($_GET['dir'])) { //设置文件目录,如果没有设置,则自动设置为当前文件所在目录 $basedir = $_GET['dir']; } else { $basedir = '.'; } $auto = 1; /*设置为1标示检测BOM并去除,设置为0标示只进行BOM检测,不去除*/ echo '当前查找的目录为:' . $basedir . '当前的设置是:'; echo $auto ? '检测文件BOM同时去除检测到BOM文件的BOM<br />' : '只检测文件BOM不执行去除BOM操作<br />'; checkdir($basedir); function checkdir($basedir) { if ($dh = opendir($basedir)) { while (($file = readdir($dh)) !== false) { if ($file != '.' && $file != '..') { if (!is_dir($basedir . '/' . $file)) { echo '文件: ' . $basedir . '/' . $file . checkBOM($basedir . '/' . $file) . ' <br>'; } else { $dirname = $basedir . '/' . $file; checkdir($dirname); } } } closedir($dh); } } 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并已自动去除</font>'); } else { return ('<font color=red>找到BOM</font>'); } } else { return ('没有找到BOM'); } } function rewrite($filename, $data) { $filenum = fopen($filename, 'w'); flock($filenum, LOCK_EX); fwrite($filenum, $data); fclose($filenum); }
相关文章推荐
- PHP中出现BOM字符\ufeff,PHP去掉诡异的BOM \ufeff
- PHP中出现BOM字符\ufeff,PHP去掉诡异的BOM \ufeff
- PHP中出现BOM字符\ufeff,PHP去掉诡异的BOM \ufeff
- PHP中出现BOM字符\ufeff,PHP去掉诡异的BOM \ufeff
- 诡异的json包含bom头
- 诡异的 C++ 字符用法 (多字符常量)
- android 非法字符 \ufeff错误
- 字符编码: 基础知识 ASCII, ANSI, Unicode, UTF, Endianness, BOM
- 关于UTF-8的BOM标识以及非法字符65279错误的一些记录
- python 第一个BOM字符处理:utf_8_sig
- 错误:非法字符:“\ufeff”
- PHP去掉诡异的BOM \ufeff
- BOM字符
- 字符转换时出现的诡异问题
- php文件第一行有多余字符,css文件第一行不起作用,bom头在作怪
- UTF-8文件BOM字符的检查和处理(待整理)
- 字符编码:Unicode/UTF-8/UTF-16/UCS/Endian/BMP/BOM
- 错误:非法字符:“\ufeff”
- 清除文件中的BOM特殊不可见字符
- php中隐形字符65279(utf-8的BOM头)问题和fwrite写入文件bom头导致的乱码问题解决