php - 从导入的 .csv 文件中删除 BOM ()

标签 php csv import fgetcsv

我想从导入的文件中删除 BOM,但它似乎不起作用。

我尝试了 preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $file); 和一个 str_replace。

我希望有人看到我做错了什么。

$filepath = get_bloginfo('template_directory')."/testing.csv";
            setlocale(LC_ALL, 'nl_NL');
            ini_set('auto_detect_line_endings',TRUE);
            $file = fopen($filepath, "r") or die("Error opening file");
            $i = 0;
            while(($line = fgetcsv($file, 1000, ";")) !== FALSE) {
                if($i == 0) {
                    $c = 0;
                    foreach($line as $col) {
                        $cols[$c] = utf8_encode($col);
                        $c++;
                    }
                } else if($i > 0) {
                    $c = 0;
                    foreach($line as $col) {
                        $data[$i][$cols[$c]] = utf8_encode($col);
                        $c++;
                    }
                }
                $i++;
            }

------------
已解决的版本:

setlocale(LC_ALL, 'nl_NL');
ini_set('auto_detect_line_endings',TRUE);
require_once(ABSPATH.'wp-admin/includes/file.php' );

$path = get_home_path();        
$filepath = $path .'wp-content/themes/pon/testing.csv';
$content = file_get_contents($filepath); 
file_put_contents($filepath, str_replace("\xEF\xBB\xBF",'', $content));

// FILE_PUT_CONTENTS AUTOMATICCALY CLOSES THE FILE
$file = fopen($filepath, "r") or die("Error opening file"); 

$i = 0;
while(($line = fgetcsv($file, 1000, ";")) !== FALSE) {
    if($i == 0) {
        $c = 0;
        foreach($line as $col) {
            $cols[$c] = $col;
            $c++;
        }
    } else if($i > 0) {
        $c = 0;
        foreach($line as $col) {
            $data[$i][$cols[$c]] = $col;
            $c++;
        }
    }
    $i++;
}

我发现它删除了 BOM 并通过用新数据覆盖它来调整文件。问题是我的脚本的其余部分不再起作用,我不明白为什么。这是一个新的 .csv 文件

最佳答案

试试这个:

function removeBomUtf8($s){
  if(substr($s,0,3)==chr(hexdec('EF')).chr(hexdec('BB')).chr(hexdec('BF'))){
       return substr($s,3);
   }else{
       return $s;
   }
}

关于php - 从导入的 .csv 文件中删除 BOM (),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32184933/

相关文章:

python - 将分类数据从 CSV 加载到 Scikit-Learn 以进行机器学习

java - 从java中的tsv文件读取

python - 如果行不存在,使用 Python 将数据更新到 mysql

php - 如何强制 Doctrine 更新数组类型字段?

php - Laravel 5 在服务器上显示空白页面但在本地工作

python - 在更新文件时使用 Python csv 模块

Python 2.7 运行 py 时找不到模块。但可以在终端中找到模块

python - 行未添加到数据库中

javascript - JavaScript 外部文件中的 PHP 语句

php - AJAX/MySQL、JavaScript - 数据库和倒计时