当前位置:Gxlcms > PHP教程 > php去掉bom头的代码分享

php去掉bom头的代码分享

时间:2021-07-01 10:21:17 帮助过:13人阅读

本文介绍下,在php中去除bom头的实例代码,bom在文件头部,占用三个字节,有时需要去除这些信息。本文给出的示例,大家可以作个参考。

去除bom头的php代码,如下:

  1. <!--?php
  2. /**
  3. * 功能:去除bom头信息
  4. * edit:bbs.it-home.org
  5. */
  6. if (isset($_GET['dir'])){ //设置文件目录
  7. $basedir=$_GET['dir'];
  8. }else{
  9. $basedir = '.';
  10. }
  11. $auto = 1;
  12. checkdir($basedir);
  13. function checkdir($basedir){
  14. if ($dh = opendir($basedir)) {
  15. while (($file = readdir($dh)) !== false) {
  16. if ($file != '.' && $file != '..'){
  17. if (!is_dir($basedir."/".$file)) {
  18. echo "filename: $basedir/$file ".checkBOM("$basedir/$file")." <br-->";
  19. }else{
  20. $dirname = $basedir."/".$file;
  21. checkdir($dirname);
  22. }
  23. }
  24. }
  25. closedir($dh);
  26. }
  27. }
  28. function checkBOM ($filename) {
  29. global $auto;
  30. $contents = file_get_contents($filename);
  31. $charset[1] = substr($contents, 0, 1);
  32. $charset[2] = substr($contents, 1, 1);
  33. $charset[3] = substr($contents, 2, 1);
  34. if (ord($charset[1]) == 239 && ord($charset[2]) == 187 && ord($charset[3]) == 191) {
  35. if ($auto == 1) {
  36. $rest = substr($contents, 3);
  37. rewrite ($filename, $rest);
  38. return ("<font color="red">BOM found, automatically removed._csdn.net</font>");
  39. } else {
  40. return ("<font color="red">BOM found.</font>");
  41. }
  42. }
  43. else return ("BOM Not Found.");
  44. }
  45. function rewrite ($filename, $data) {
  46. $filenum = fopen($filename, "w");
  47. flock($filenum, LOCK_EX);
  48. fwrite($filenum, $data);
  49. fclose($filenum);
  50. }
  51. ?>

附,bom头信息说明。 在utf-8编码文件中BOM在文件头部,占用三个字节,用来标示该文件属于utf-8编码。

PHP不能识别bom头,用记事本编辑utf-8编码后执行会出错。

去掉bom头,可以这样: 1、editplus去BOM头的方法 编辑器调整为UTF8编码格式后,保存的文件前面会多出一串隐藏的字符(也即是BOM),用于编辑器识别这个文件是否是以UTF8编码。 运行Editplus,点击工具,选择首选项,选中文件,UTF-8标识选择 总是删除签名,然后对PHP文件编辑和保存后的PHP文件就是不带BOM的了。

2、ultraedit去除bom头办法 打开文件后,另存为选项的编码格式里选择(utf-8 无bom头),确即可。

3、专门写的去除文件BOM头的程序,现在公布出来,可以放在项目根目录,然后运行。

人气教程排行