PHP从csv中删除列

时间:2017-08-02 08:53:06

标签: php csv

我需要从csv中删除一些列和第一行,并将结果放在新的csv文件中。 我已经尝试过在堆栈中找到的一些sugesstions,但它们都不适合我。 我的csv有9列,但我只需要5列。 这里删除列的最佳解决方案似乎是我将在下面发布的那个,但我只在结果文件中获得逗号,而在某些数据中也是如此。 我的csv中的数据用';'标记。 我希望任何人都可以帮助我。

以下是我玩的代码:

<?php
 $input = 'gesamtbestand.csv';
 $output = 'mw-stock.csv';

 if (false !== ($ih = fopen($input, 'r'))) {
$oh = fopen($output, 'w');

while (false !== ($data = fgetcsv($ih))) {
    // this is where you build your new row
    $outputData = array($data[1], $data[2], $data[4], $data[5], $data[8]);
    fputcsv($oh, $outputData);
}

fclose($ih);
fclose($oh);
}

1 个答案:

答案 0 :(得分:2)

fgetcsv的默认分隔符是,你可以在php手册中看到http://php.net/manual/en/function.fgetcsv.php

如果您的csv文件使用;对于分隔符,那么你应该改变行

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>  
<p><label>character 1:</label><input id="s1" class="q1 inputs letter square border_black" maxlength="1"  type="text"/></p>
<p><label>character 2:</label><input id="s1" class="q1 inputs letter square border_black" maxlength="1"  type="text"/></p>
<p><label>character 3:</label><input id="s1" class="q1 inputs letter square border_black" maxlength="1"  type="text"/></p>
<p><label>character 4:</label><input id="s1" class="q1 inputs letter square border_black" maxlength="1"  type="text"/></p>
<p><label>character 5:</label><input id="s1" class="q1 inputs letter square border_black" maxlength="1"  type="text"/></p>
<p><label>character 6:</label><input id="s1" class="q1 inputs letter square border_black" maxlength="1"  type="text"/></p>
<p><label>character 7:</label><input id="s1" class="q1 inputs letter square border_black" maxlength="1"  type="text"/></p>
<p><label>word:</label><input class="solution_2" value="" class="form-control" type="text" name="date"></p>

while (false !== ($data = fgetcsv($ih))) {

默认机箱是&#34;

如果您未在数据中使用附件,则应将行更改为

while (false !== ($data = fgetcsv($ih, 0, ";"))) {

至于排除csv文件的第一个条目,你可以这样做

while (false !== ($data = fgetcsv($ih, 0, ";", ""))) {