【问题标题】:Remove extra comma after string删除字符串后多余的逗号
【发布时间】:2016-01-28 08:57:21
【问题描述】:

我在 CSV 文件中有很多数据。我写了一些代码只提取第 1 列并将其放入 txt 文件中:

fwrite($file2, $data[0].',');

现在,这创建了一个 TXT 文件,其中所有值用逗号分隔。 但是,在读取最后一个值后,有一个额外的逗号

我不需要这个,因为当我使用foreach($splitcontents as $x=> $y) 使用逗号分隔符时,由于多余的逗号,它在末尾读取了一个垃圾值。

如何删除或避免末尾的逗号?

【问题讨论】:

    标签: php csv


    【解决方案1】:

    使用fputcsv() 而不是错误地重新实现它。

    【讨论】:

    • 使用 FGETCSV 的问题是,所有数据都在一列中用分号分隔...即第 1 列有 x;y;z;c 等...
    • 所以我不得不使用一个数组并只打印第一列,因此使用 $data[0] ...
    【解决方案2】:

    您可以使用fputcsv() 将其转换为正确的格式,而不是自行组装 CSV 文件:

    while (...) {
        fputcsv($file2, array($data[0], $data[1], $data[22])  );
    

    第二个参数必须是一个数组。如果您真的只想要一列,则忽略其余列。

    也为了读回文件,请查看fgetcsv()。这可能会简化您的 foreach + $splitstring 方法。

    【讨论】:

    • 如果不显示包含逻辑错误的整个程序部分,您将无法获得匹配的答案。
    • 我已经使用了 fgetcsv ,所有数据都在一个列中用分号分隔......即第 1 列有 x;y;z;c 等。所以我不得不使用一个数组和只打印第一列, - 因此使用 ($data[0] . ',' ) ...我只想在文件末尾删除这个逗号!
    • 您当时使用 fgetcsv 错误。有一个参数,您可以轻松地将分隔符从, 逗号更​​改为; 分号。再说一遍:不要神秘地重新解释你的问题,我们已经知道你做错了什么。只需显示您的代码。 CLICK HERE TO EDIT YOUR QUESTION
    【解决方案3】:

    解决问题的一种方法是在拆分之前对从第二个文件加载的数据使用rtrim($data, ',')。这将删除结尾的逗号。

    如果你想修复文件本身,你可以这样做:

    ftruncate($file2, ftell($file2)-1);
    

    您必须在致电 fclose() 之前执行此操作

    【讨论】:

    • 但我只使用explode 和splitcontents... 这会给我没有逗号的数据。但是,在最后的数据中,当我使用explode ..
    • FOR EX: 1,2,3,4, ---- 这里,最后,explode 给了我 4 和一个(垃圾值)....我不想要逗号仅在该文件的末尾...(数据本身没有逗号)
    • 如果$data = '1,2,3,4,'; 然后rtrim($data, ',') 给你1,2,3,4 - 没有最后一个逗号。只需在您致电explode() 之前完成
    • 好的,我已经编辑了我的答案,以展示一种可以从文件中实际删除最后一个逗号的方法。
    • 哇,谢谢马克!这很简单,但我没有耐心去寻找它。你是最棒的……
    猜你喜欢
    • 2019-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-22
    • 2022-06-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多