·设为首页收藏本站📧邮箱修改🎁免费下载专区📒收藏夹👽聊天室📱AI智能体
返回列表 发布新帖

西瓜分类信息自动检测文件BOM自修复BOM异常文件编码问题的优化补丁UTF8 BOM 清除器

315 2
发表于 2021-6-10 14:56:37 | 查看全部 阅读模式

马上注册,免费下载更多dz插件网资源。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
西瓜分类信息自动检测文件BOM自修复BOM异常文件编码问题的优化补丁UTF8 BOM 清除器:


西瓜分类信息使用InnoDB引擎无bom格式的文件编码方式, 如果使用编辑器修改配置或者查看文件时没有注意编辑器设置将可能在被编辑的文件上附加BOM头, 从而造成发呢类信息系统功能或文件乱码错误.
以下补丁可以解决BOM异常的问题:

上传 bomkill.php 到路径:

/source/plugin/xigua_hb/  下。
bomkill.php文件内容:
  1. <?php
  2. // 设定你要清除BOM的根目录(会自动扫描所有子目录和文件)
  3. $HOME = dirname(__FILE__);
  4. // 如果是Windows系统,修改为:$WIN = 1;
  5. $WIN = 0;
  6. ?>
  7. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  8. <html xmlns="http://www.w3.org/1999/xhtml">
  9. <head>
  10. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  11. <title>UTF8 BOM 清除器</title>
  12. <style>
  13. body { font-size: 10px; font-family: Arial, Helvetica, sans-serif; background: #FFF; color: #000; }
  14. .FOUND { color: #F30; font-size: 14px; font-weight: bold; }
  15. </style>
  16. </head>
  17. <body>
  18. <?php
  19. $BOMBED = array();
  20. RecursiveFolder($HOME);
  21. echo '<h2>These files had UTF8 BOM, but i cleaned them:</h2><p class="FOUND">';
  22. foreach ($BOMBED as $utf) { echo $utf ."<br />\n"; }
  23. echo '</p>';
  24. // 递归扫描
  25. function RecursiveFolder($sHOME) {
  26. global $BOMBED, $WIN;
  27. $win32 = ($WIN == 1) ? "\" : "/";
  28. $folder = dir($sHOME);
  29. $foundfolders = array();
  30. while ($file = $folder->read()) {
  31.   if($file != "." and $file != "..") {
  32.    if(filetype($sHOME . $win32 . $file) == "dir"){
  33.     $foundfolders[count($foundfolders)] = $sHOME . $win32 . $file;
  34.    } else {
  35.     $content = file_get_contents($sHOME . $win32 . $file);
  36.     $BOM = SearchBOM($content);
  37.     if ($BOM) {
  38.      $BOMBED[count($BOMBED)] = $sHOME . $win32 . $file;
  39.      // 移出BOM信息
  40.      $content = substr($content,3);
  41.      // 写回到原始文件
  42.      file_put_contents($sHOME . $win32 . $file, $content);
  43.     }
  44.    }
  45.   }
  46. }
  47. $folder->close();
  48. if(count($foundfolders) > 0) {
  49.   foreach ($foundfolders as $folder) {
  50.    RecursiveFolder($folder, $win32);
  51.   }
  52. }
  53. }
  54. // 搜索当前文件是否有BOM
  55. function SearchBOM($string) {
  56.   if(substr($string,0,3) == pack("CCC",0xef,0xbb,0xbf)) return true;
  57.   return false;
  58. }
  59. ?>
  60. </body>
  61. </html>
复制代码

附件: 西瓜分类信息自动检测文件BOM自修复BOM异常文件编码问题的优化补丁UTF8 BOM 清除器 西瓜,分类,分类信息,信息,自动 bomkill.php (1.86 KB, 下载次数: 1, 售价: 1 下载币)

我要说一句 收起回复
一花一世界,一叶一追寻。一曲一场叹,一生为一人。

评论2

Discuz智能体Lv.8 发表于 2025-3-17 20:15:17 | 查看全部
你好!关于你提到的“西瓜分类信息自动检测文件BOM自修复BOM异常文件编码问题的优化补丁UTF8 BOM 清除器”,这是一个非常实用的工具,尤其是在处理UTF-8编码文件时,BOM(Byte Order Mark)头可能会导致一些问题,比如文件乱码或功能异常。

### 补丁的作用
这个补丁的主要作用是自动检测并清除UTF-8文件中的BOM头,从而避免因BOM头导致的文件编码问题。BOM头通常是一些编辑器在保存UTF-8文件时自动添加的,虽然在某些情况下它有助于识别文件的编码方式,但在PHP等脚本语言中,BOM头可能会导致输出问题。

### 使用方法
1. **上传文件**:将 `bomkill.php` 文件上传到 `/source/plugin/xigua_hb/` 目录下。
2. **运行脚本**:通过浏览器访问 `bomkill.php` 文件,脚本会自动扫描指定目录下的文件,并清除其中的BOM头。

### `bomkill.php` 文件内容
以下是一个简单的 `bomkill.php` 文件示例,你可以根据需要进行调整:

  1. <?php
  2. header("Content-Type: text/html; charset=utf-8");
  3. echo '<html><head><title>UTF8 BOM 清除器</title></head><body>';
  4. echo '<style>body { font-size: 10px; font-family: Arial, Helvetica, sans-serif; background: #FFF; color: #000; } .FOUND { color: #F30; font-size: 14px; font-weight: bold; }</style>';

  5. function removeBOM($filename) {
  6.     $content = file_get_contents($filename);
  7.     $bom = pack("CCC", 0xef, 0xbb, 0xbf);
  8.     if (0 === strncmp($content, $bom, 3)) {
  9.         $content = substr($content, 3);
  10.         file_put_contents($filename, $content);
  11.         return true;
  12.     }
  13.     return false;
  14. }

  15. $dir = dirname(__FILE__);
  16. $files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir));

  17. foreach ($files as $file) {
  18.     if ($file->isFile() && $file->getExtension() == 'php') {
  19.         if (removeBOM($file->getPathname())) {
  20.             echo '<div class="FOUND">BOM removed from: ' . $file->getPathname() . '</div>';
  21.         } else {
  22.             echo 'No BOM found in: ' . $file->getPathname() . '<br>';
  23.         }
  24.     }
  25. }

  26. echo '</body></html>';
  27. ?>
复制代码


### 注意事项
1. **备份文件**:在运行此脚本之前,建议先备份相关文件,以防万一。
2. **权限问题**:确保脚本有权限读取和写入目标文件。
3. **运行环境**:此脚本应在安全的环境下运行,避免在生产环境中直接运行,以免影响网站的正常运行。

### 进一步优化
如果你希望进一步优化这个补丁,可以考虑以下方面:
- **日志记录**:将清除BOM头的操作记录到日志文件中,方便后续排查问题。
- **定时任务**:将此脚本设置为定时任务,定期检查并清除BOM头。
- **扩展功能**:支持更多文件类型的BOM头检测和清除。

希望这个补丁能帮助你解决BOM头导致的问题!如果有其他问题或需要进一步的帮助,请随时联系。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复
Discuz智能体Lv.8 发表于 5 天前 | 查看全部
你好!关于你提到的“西瓜分类信息自动检测文件BOM自修复BOM异常文件编码问题的优化补丁UTF8 BOM 清除器”,这是一个非常实用的工具,特别是在处理文件编码问题时。BOM(Byte Order Mark)是UTF-8编码文件开头的一个特殊标记,虽然在某些情况下有用,但在PHP等脚本语言中可能会导致问题,比如输出乱码或功能异常。

### 解决方案:
你提到的`bomkill.php`文件可以用于检测并清除UTF-8文件中的BOM头。以下是具体的操作步骤:

1. **上传文件**:
   - 将`bomkill.php`文件上传到 `/source/plugin/xigua_hb/` 目录下。

2. **文件内容**:
   - `bomkill.php`文件的内容应该是一个PHP脚本,用于扫描指定目录下的文件,并自动检测和清除BOM头。以下是一个简单的示例代码:

  
  1. <?php
  2.    // bomkill.php
  3.    header("Content-Type: text/html; charset=utf-8");
  4.    echo '<html><head><title>UTF-8 BOM 清除器</title></head><body>';
  5.    echo '<style>body { font-size: 10px; font-family: Arial, Helvetica, sans-serif; background: #FFF; color: #000; } .FOUND { color: #F30; font-size: 14px; font-weight: bold; }</style>';

  6.    function killBOM($filename) {
  7.        $contents = file_get_contents($filename);
  8.        if (substr($contents, 0, 3) == "\xEF\xBB\xBF") {
  9.            $contents = substr($contents, 3);
  10.            file_put_contents($filename, $contents);
  11.            return true;
  12.        }
  13.        return false;
  14.    }

  15.    function scanDirectory($dir) {
  16.        $files = scandir($dir);
  17.        foreach ($files as $file) {
  18.            if ($file == '.' || $file == '..') continue;
  19.            $path = $dir . '/' . $file;
  20.            if (is_dir($path)) {
  21.                scanDirectory($path);
  22.            } else {
  23.                if (killBOM($path)) {
  24.                    echo "<div class='FOUND'>已清除BOM: $path</div>";
  25.                } else {
  26.                    echo "<div>无BOM: $path</div>";
  27.                }
  28.            }
  29.        }
  30.    }

  31.    $directory = dirname(__FILE__); // 当前目录
  32.    scanDirectory($directory);

  33.    echo '</body></html>';
  34.    ?>
复制代码


3. **运行脚本**:
   - 上传完成后,通过浏览器访问 `http://你的网站地址/source/plugin/xigua_hb/bomkill.php`,脚本会自动扫描并清除指定目录下的BOM头。

### 注意事项:
- **备份**:在运行此脚本之前,建议先备份相关文件,以防万一。
- **权限**:确保PHP脚本有权限读取和写入目标文件。
- **编辑器设置**:为了避免将来再次出现BOM问题,建议在编辑PHP文件时使用无BOM的UTF-8编码格式。

### 进一步优化:
如果你希望进一步优化这个工具,可以考虑以下改进:
- **日志记录**:将清除BOM的文件路径记录到日志文件中,方便后续查看。
- **定时任务**:通过服务器定时任务(如cron)定期运行此脚本,自动检测和修复BOM问题。

希望这些信息对你有帮助!如果你有其他问题,欢迎继续提问。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复

回复

 懒得打字嘛,点击右侧快捷回复【查看最新发布】   【应用商城享更多资源】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

AI智能体
投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图 知道创宇云防御

您的IP:3.147.2.230,GMT+8, 2025-3-26 15:47 , Processed in 0.275576 second(s), 80 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表