当前位置: 首页 > 知识库问答 >
问题:

PHP,需要PHP文件时删除BOM

燕烨
2023-03-14

日安!

我想我已经阅读了几乎所有与PHP和BOM相关的问题,但仍然没有找到适合我的问题的答案。所以我在这里:

我有一个PHP脚本(loader.PHP),它第一次运行时会生成一个配置文件(_config.PHP),在这个脚本中,我只存储一些与第一次调用的环境有关的变量。如果_config。php文件已经存在,我需要它在加载器中。php

一切正常,但问题是_config。php需要创建为UTF8。在这个问题上,对我来说唯一有效的方法就是

file_put_contents(
    $folder, 
    "\xEF\xBB\xBF".$phpCommands
);

当然,这会添加BOM表,我在第二次加载时使用require函数来读取它。调用php,最终在页面开始处生成众所周知的额外空间问题。我尝试使用此处建议的方法将其从页面的最终输出中删除,但这不会影响结果,可能是因为BOM是通过require插入的,而不是通过fopen或类似工具插入的。

我所有的PHP脚本都是UTF-8(没有BOM)。生成的_config。php是UTF-8“带BOM”。

为了解决这个问题,我有两种解决方案,但我不知道如何使它们发挥作用:

  1. 创建一个不带BOM的UTF8编码文件(由于旧PHP,流、iconv不是选项)
  2. 文件删除BOM表后需要\u

有人能帮帮我吗?

请不要向我建议生成/存储配置的替代策略。必须这样做。

谢谢!

共有1个答案

柯星辰
2023-03-14

创建文件时只需不添加BOM。它本身没有任何目的。

对你“对我来说唯一有效的方法”最有可能的解释只是一个糟糕的测试方法,不多不少。也就是说,你的文件是用UTF-8创建的,非常好,只是你用来确认有缺陷的任何方法。我猜你在某个文本编辑器中打开了结果文件,那个编辑器告诉你文件编码是“ANSI”或“ASCII”之类的。

纯文本文件不会在任何地方声明其编码。你的文本编辑器只是猜测它的编码。如果文件内容只是简单的英语/ASCII,ASCII、ANSI和UTF-8之间没有任何区别。你的文本编辑器只是告诉你一个可能的答案,其中任何答案都是同样有效的。添加BOM会显式地在文件的开头放置一个提示,即编码是UTF-8,这是编辑器选择的。

这个,或者类似的东西,很可能是你的全部非问题。

 类似资料:
  • 我想从名为"fajlovi"的文件夹中删除文件。多个和单个删除应该工作。但是它会删除文件夹中的第一个文件(文件夹中文件数组中的0位置)。如果我检查任何文件,它将删除前4个文件,而不是我检查的文件。下面是代码: 1.这是页面的截图: 2.然后我检查要删除的图像: 4.再次进入页面后,我们可以看到错误的图像被删除:

  • 问题内容: 如果文件位于另一个目录中,如何使用PHP从服务器中删除文件? 这是我的页面布局: (此文件将删除我对数据库的所有条目,并且还应删除相关文件) (文件所在的位置。) 我正在使用的功能: 但这总是给我一个错误,该文件不存在。有任何想法吗? 问题答案: 以下应该有帮助 —返回规范化的绝对​​路径名 —告诉文件名是否可写 —删除文件 通过realpath运行文件路径,然后检查返回的路径是否可写

  • 问题内容: 有人有吗? 问题答案: 它是双冒号运算符(请参阅解析器标记列表)。

  • 本文向大家介绍PHP 删除Cookie,包括了PHP 删除Cookie的使用技巧和注意事项,需要的朋友参考一下 示例 要删除Cookie,请将过期时间戳记设置为过去的时间。这将触发浏览器的删除机制: 删除Cookie时,请确保path和的domain参数setcookie()与您要删除的Cookie匹配,否则将创建一个立即过期的新Cookie。 $_COOKIE如果当前页面使用该值,则最好取消设置

  • 我在第一页“login.php”中有这个 日志php: 如果我测试第一个页面“login.php”,我会得到: 警告:require_once(1):无法打开流:C:\xampp\htdocs\admin\login中没有此类文件或目录。php第6行 致命错误:require_once():无法在C:\xampp\htdocs\admin\login中打开所需的“1”(include_path=”

  • 我有一个非常简单的功能: 该文件在执行后显示不可读,并从文件目录中消失。但是,当从浏览器访问时,它仍然可用,尽管没有缓存(在不同的浏览器上打开文件进行测试)。我是不是错过了什么?文件是否被服务器缓存?这是我能想到的唯一解释。