【前言】
本文介绍个去掉隐藏字符的解决办法
【主体】
PHP项目部署到服务器上后,有时会出现html模板自动加载空行的情况,而且
标签被移到了body中去。这个问题刚开始的时候知道是编辑器的问题,所以尝试编辑器转换成utf-8无BOM形式。但网上找的很多编辑器,下载了五六款尝试了下都无法实现。后来试着脚本文件去除,不过存在缺陷。所以将两种方法结合在了一起。(原因):是utf-8用记事本编辑代码保存的错误,使代码在保存的时候带上了BOM。
最好写代码的时候用编译器编写,不要用记事本编写代码。
(方案):用脚本文件搜索出哪个文件存在问题,然后用编辑器转换,针对性解决问题
【方案】
(1)将下面代码保存为a.php文件放到根目录下,执行一下,即可打印出哪个文件出了问题。
UTF8 BOM 清除器 These files had UTF8 BOM, but i cleaned them:'; foreach ($BOMBED as $utf) { echo $utf ."
'; // 递归扫描 function RecursiveFolder($sHOME) { global $BOMBED, $WIN; $win32 = ($WIN == 1) ? "\\" : "/"; $folder = dir($sHOME); $foundfolders = array(); while ($file = $folder->read()) { if($file != "." and $file != "..") { if(filetype($sHOME . $win32 . $file) == "dir"){ $foundfolders[count($foundfolders)] = $sHOME . $win32 . $file; } else { $content = file_get_contents($sHOME . $win32 . $file); $BOM = SearchBOM($content); if ($BOM) { $BOMBED[count($BOMBED)] = $sHOME . $win32 . $file; // 移出BOM信息 $content = substr($content,3); // 写回到原始文件 file_put_contents($sHOME . $win32 . $file, $content); } } } } $folder->close(); if(count($foundfolders) > 0) { foreach ($foundfolders as $folder) { RecursiveFolder($folder, $win32); } } } // 搜索当前文件是否有BOM function SearchBOM($string) { if(substr($string,0,3) == pack("CCC",0xef,0xbb,0xbf)) return true; return false; } ?>
\n"; } echo '
(2)接下来按照页面输出的提示去转换格式
点击下面的网址下载一个UltraEdit
http://dlsw.baidu.com/sw-search-sp/soft/41/10554/ue_chinese_V22.10.0.12_setup.1436351778.exe
具体操作:
打开UltraEdit,在UltraEdit里打开带隐藏字符的文件,然后另存为,窗口最下面最左边有一个选项,显示默认,打开下拉条选择utf-8无BOM,然后回车,去你保存的文件位置找到,拖拽到项目里,ok 完成。
.