欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

读取CSV文件的问题

程序员文章站 2022-04-10 23:12:32
...
现在有个CSV的文件,格式如下:

"11111";"1111111";"2324242";"66dggdgg"LF(换行)
“sdfsfsdfsdf”;"sdfsdfsdfsfd";"sdfsdf CR LF(换行) sfsdf";"sdfsdfsdfsfsf"LF(换行)

现在的问题是字段里面的内容包含了换行符,请问这种一般怎么处理?(东南亚一个垃圾平台导出的文件格式)


回复讨论(解决方案)

你应给出真实的文件,哪怕是截个图也好
并说明你遇到的问题

fgetcsv、str_getcsv 都可以很好的处理

http://pan.baidu.com/s/1sjEcrM1
以上是文档链接,主要是怎么处理内容中的换行符

$fp = fopen('Order_2015-12-01_113045.csv', 'r');while($buf = fgetcsv($fp, '"', ';')) {  $res[] = $buf;}print_r($res);
Array(    [0] => Array        (            [0] => 锘�"Order Item Id"            [1] => Lazada Id            [2] => Seller SKU            [3] => Lazada SKU            [4] => Created at            [5] => Updated at            [6] => Order Number            [7] => Customer Name            [8] => National Registration Number            [9] => Shipping Name            [10] => Shipping Address            [11] => Shipping Address2            [12] => Shipping Address3            [13] => Shipping Address4            [14] => Shipping Address5            [15] => Shipping Phone Number            [16] => Shipping Phone Number2            [17] => Shipping City            [18] => Shipping Postcode            [19] => Shipping Country            [20] => Billing Name            [21] => Billing Address            [22] => Billing Address2            [23] => Billing Address3            [24] => Billing Address4            [25] => Billing Address5            [26] => Billing Phone Number            [27] => Billing Phone Number2            [28] => Billing City            [29] => Billing Postcode            [30] => Billing Country            [31] => Payment Method            [32] => Paid Price            [33] => Unit Price            [34] => Shipping Fee            [35] => Wallet Credits            [36] => Item Name            [37] => Variation            [38] => Color            [39] => CD Shipping Provider            [40] => Shipping Provider            [41] => Shipment Type Name            [42] => Shipping Provider Type            [43] => CD Tracking Code            [44] => Tracking Code            [45] => Tracking URL            [46] => Promised shipping time            [47] => Premium            [48] => Status            [49] => Reason        )    [1] => Array        (            [0] => 4510457            [1] => 10940553            [2] => lazada000009            [3] => NO037OTAA43BO8ANMY-8132332            [4] => 2015-11-30 14:09:14            [5] => 2015-11-30 15:23:39            [6] => 344351562            [7] =>             [8] =>             [9] => Rinee Ramiah            [10] => UMW TOYOTSU MOTORS SDN BHDNo 1,jalan batu arang,            [11] =>             [12] =>             [13] =>             [14] =>             [15] => 0122533611            [16] =>             [17] => Selangor-Rawang-48000            [18] => 48000            [19] => Malaysia            [20] => Rinee Ramiah            [21] => UMW TOYOTSU MOTORS SDN BHDNo 1,jalan batu arang,            [22] =>             [23] =>             [24] =>             [25] =>             [26] => 0122533611            [27] =>             [28] => Selangor-Rawang-48000            [29] => 48000            [30] => Malaysia            [31] => Cybersource            [32] => 49.25            [33] => 49.25            [34] => 0.00            [35] => 0.00            [36] => BesWLZ Multi Function Mens Military DualTime Digital Analog Chronograph Sport Wrist Watch 50M Water Resistant Waterproof for Boy Girls Child Kids Gift (Green)            [37] => ...            [38] =>             [39] =>             [40] =>             [41] => Dropshipping            [42] => standard            [43] =>             [44] =>             [45] =>             [46] =>             [47] => No            [48] => canceled            [49] => Out of Stock - Product non available        ))

[0][0] 元素因 BOM 头的影响,结果有点问题
去掉就正常了

Array(    [0] => Array        (            [0] => Order Item Id            [1] => Lazada Id  ......

请问怎么去掉BOM头, 是要用文本编辑软件去掉吗?如果用PHP怎么去掉?

$fp = fopen('Order_2015-12-01_113045.csv', 'r');
fseek($fp, 3); //这样就去掉了
while($buf = fgetcsv($fp, '"', ';')) {
$res[] = $buf;
}
print_r($res);

也不是去掉,是 跳过