You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解析银行App导出的格式异常的逗号分隔文件?

可靠解析异常格式银行CSV文件的方法

问题分析

你遇到的CSV文件存在多种格式异常:

  • 整行被外层双引号包裹
  • 字段值用成对双引号(""abc"")表示实际带引号的内容
  • 行尾分号数量随机,部分行无分号
  • 部分字段内部包含分号等特殊字符

解决方案

以下是通用且可靠的解析代码,能适配所有异常情况:

// 打开目标CSV文件
$file = fopen('bank_transactions.csv', 'r');
if (!$file) {
    die('无法打开CSV文件');
}

// 编码转换工具函数
function convertToUtf8($content) {
    return mb_convert_encoding($content, "UTF-8", "ISO-8859-2");
}

while (($rawLine = fgets($file)) !== false) {
    $line = trim($rawLine);
    if (empty($line)) continue;

    // 1. 移除整行首尾的外层双引号
    $line = preg_replace('/^"|"$/', '', $line);
    // 2. 清理行尾所有冗余分号(不管数量多少)
    $line = rtrim($line, ';');
    // 3. 修复字段内的双引号转义:将""替换为"
    $line = str_replace('""', '"', $line);
    
    // 转码并解析CSV字段
    $parsedFields = str_getcsv(convertToUtf8($line), ',');
    
    // 此处可添加自定义业务逻辑,比如存储到数据库或输出
    print_r($parsedFields);
}

fclose($file);

代码说明

  • 首尾双引号处理:用正则表达式精准匹配并移除整行最外层的双引号,不影响字段内部的引号
  • 行尾分号清理:rtrim直接去除行尾所有分号,兼容有/无分号、分号数量随机的情况
  • 引号转义修复:统一将""替换为",还原字段内的原始引号内容
  • 原生CSV解析:使用PHP内置的str_getcsv函数,确保含逗号、引号等特殊字符的字段能被正确拆分

内容的提问来源于stack exchange,提问作者Kida

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 03:37:14