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

如何删除多个UTF-8 BOM序列

乜明朗
2023-03-14

使用PHP5(cgi)从文件系统输出模板文件,并在输出原始HTML时遇到问题。

private function fetch($name) {
    $path = $this->j->config['template_path'] . $name . '.html';
    if (!file_exists($path)) {
        dbgerror('Could not find the template "' . $name . '" in ' . $path);
    }
    $f = fopen($path, 'r');
    $t = fread($f, filesize($path));
    fclose($f);
    if (substr($t, 0, 3) == b'\xef\xbb\xbf') {
        $t = substr($t, 3);
    }
    return $t;
}

尽管我已经添加了BOM修复,但Firefox接受它时仍然存在问题。您可以在此处看到实时副本:http://ircb.in/jisti/(还有我扔的模板文件http://ircb.in/jisti/home.html如果您想查看它)

知道怎么解决这个问题吗?o_o

共有3个答案

洪黎昕
2023-03-14

另一种方法来删除BOM这是Unicode代码点U FEFF

$str = preg_replace('/\x{FEFF}/u', '', $file);
高正初
2023-03-14

尝试:

// -------- read the file-content ----
$str = file_get_contents($source_file); 

// -------- remove the utf-8 BOM ----
$str = str_replace("\xEF\xBB\xBF",'',$str); 

// -------- get the Object from JSON ---- 
$obj = json_decode($str); 

:)

长孙兴德
2023-03-14

您将使用以下代码删除utf8 bom表

//Remove UTF8 Bom

function remove_utf8_bom($text)
{
    $bom = pack('H*','EFBBBF');
    $text = preg_replace("/^$bom/", '', $text);
    return $text;
}
 类似资料:
  • 问题内容: 使用PHP5(cgi)从文件系统输出模板文件,并出现吐出原始HTML的问题。 即使我添加了BOM修复程序,但Firefox接受它仍然有问题。您可以在此处查看实时副本:http : //ircb.in/jisti/(以及要查看的模板文件,我在http://ircb.in/jisti/home.html上提交的文件) 任何想法如何解决这个问题?o_o 问题答案: 您将使用以下代码删除utf

  • 问题内容: 我有一个带有BOM的UTF-8编码文件,并且想要删除BOM。是否有任何Linux命令行工具可从文件中删除BOM? 问题答案: BOM是Unicode代码点U + FEFF;UTF-8编码由三个十六进制值0xEF,0xBB,0xBF组成。 使用bash,您可以创建带有特殊引号形式的UTF-8 BOM,该形式实现Unicode转义:。因此,使用bash,从文本文件的开头删除UTF-8 BO

  • 我正在创建一个脚本,用于将一个参数传入MySQL查询,然后执行该MySQL查询以从多个表中删除多条记录。 现在我遇到了一个问题,我需要为每个单独的表创建多个文件。是否有一种方法可以在一个文件中执行每个MySQL查询,而不是为每个查询创建多个文件? 以下是我创建的代码:

  • 问题内容: 有没有更好的办法重写: 我无法使用, 因为它会删除所有我不想要的类。 问题答案: 从,类参数: 要从元素中删除的一个或多个CSS类,这些类之间用空格隔开。

  • 问题内容: 我试图一次从几个表中删除。我做了一些研究,并提出了 但是,我收到此错误 未捕获的Database_Exception [1064]:您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册以获取正确的语法,以在’p,pa … 附近使用… 我以前从未做过跨表删除操作,所以我现在还没有经验,并且一直坚持下去! 我究竟做错了什么? 问题答案: 在语句中使用a 。 另外,您可以使用…

  • 假设我的数据库结构如下: 当删除任何用户1\u UID时,我想从所有节点a、b、c中删除用户1\u UID。 例如,如果我从节点b中删除了key1:user1\u-UID,是否有一种方法也可以从节点a和节点c中删除key1:user1\u-UID,而无需遍历所有节点?还是我的数据结构错误(请注意,这些数据可能嵌套得更深)?