用php去除bom头
2016-07-04 17:11
441 查看
最近在用dede开发一个网站的时候,发现网站在本地没什么问题,但是上传到服务器上面去之后,在首页会默认的生成一串的字符串,如下图所示:
![](file:///C:\Users\Administrator\AppData\Roaming\Tencent\Users\2269151670\QQ\WinTemp\RichOle\0XGN4PWV{U98Q{NCX7OZ2YO.jpg)
![](https://images2015.cnblogs.com/blog/735803/201607/735803-20160704164958686-1004051327.png)
百度了之后,发现好多的解决方法都是说的把文件存储为utf-8无bom模式,但是发现我用了这个方法之后,这字符串还是在~
后面经人提点说有php方法可以去除~然后找到以下代码:
具体使用方法如下(此流程只针对于php小白~):
1.新建一个php文件,命名你自己随便取,我这里就取名为:withoutBoml.php;
2.将文件上传到根目录下面(所谓的根目录就是wwwroot或者htdocs);
3.然后运行此段php代码:http://你的网站域名/withoutBoml.php(比如说你的网站是www.haha.com,那么就运行http://www.haha.com/withoutBoml.php).
运行完之后再看你的网站,发现真的没有了哦~~
10月24日更新
感谢@ 都瓦克因 ,告诉了我报错原因是return里面输出的html语句双引号冲突了,把最外层的双引号修改为单引号就可以了;
![](file:///C:\Users\Administrator\AppData\Roaming\Tencent\Users\2269151670\QQ\WinTemp\RichOle\0XGN4PWV{U98Q{NCX7OZ2YO.jpg)
![](https://images2015.cnblogs.com/blog/735803/201607/735803-20160704164958686-1004051327.png)
百度了之后,发现好多的解决方法都是说的把文件存储为utf-8无bom模式,但是发现我用了这个方法之后,这字符串还是在~
后面经人提点说有php方法可以去除~然后找到以下代码:
<?php if (isset($_GET['dir'])) { //设置文件目录 $basedir = $_GET['dir']; } else { $basedir = '.'; } $auto = 1; checkdir($basedir); function checkdir($basedir) { if ($dh = opendir($basedir)) { while (($file = readdir($dh)) !== false) { if ($file != '.' && $file != '..') { if (!is_dir($basedir . "/" . $file)) { echo "filename: $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 found, automatically removed.</font>'); } else { return ('<font color="red">BOM found.</font>'); } } else return ("BOM Not Found."); } function rewrite($filename, $data) { $filenum = fopen($filename, "w"); flock($filenum, LOCK_EX); fwrite($filenum, $data); fclose($filenum); } ?>
具体使用方法如下(此流程只针对于php小白~):
1.新建一个php文件,命名你自己随便取,我这里就取名为:withoutBoml.php;
2.将文件上传到根目录下面(所谓的根目录就是wwwroot或者htdocs);
3.然后运行此段php代码:http://你的网站域名/withoutBoml.php(比如说你的网站是www.haha.com,那么就运行http://www.haha.com/withoutBoml.php).
运行完之后再看你的网站,发现真的没有了哦~~
10月24日更新
感谢@ 都瓦克因 ,告诉了我报错原因是return里面输出的html语句双引号冲突了,把最外层的双引号修改为单引号就可以了;
相关文章推荐
- php 如何利用 soap调用.Net的WebService asmx文件
- yii调用微信接口扫二维码
- PHP 复习
- PHP编码规范(PSR-4)-Autoloader 自动加载
- php 读取webservice接口
- ThinkPHP项目实现分布式部署(网站集群)
- 初识 PHP
- PHP编码规范(PSR-3)-日志接口规范
- PHP小总结
- PHP current() 函数
- PHP中cookie和Session
- 简单、 灵活、强大的PHP采集工具,让采集更简单一点。
- phpMyAdmin 尝试连接到 MySQL 服务器,但服务器拒绝连接
- PHP入门(1) for循环
- 【FAQ】gitbook FileNotParsableError: xxx file cannot be parsed
- php单链表实现代码分享
- 使用vue.js + laravel开发单页面应用
- 0627 CMD运行php代码
- Yii2.0预定义的别名功能小结
- Recyclerview 点击事件区别 getPosition() ,getLayoutPosition(),getAdapterPosition()