【问题标题】:php fputcsv is trims the string value while writing to filephp fputcsv 在写入文件时修剪字符串值
【发布时间】:2015-02-23 06:42:55
【问题描述】:

我不知道这个问题是否被问到。我没有得到他的建议。

我正在尝试将一些数据从数据库写入 csv 文件。 我正在使用fputcsv 函数。

我正在使用以下代码:

$fh = @fopen($fileName, 'w+');
        $writeText['sku'] = $somevalue
        $writeText['attribute_set'] = $somevalue
        $writeText['type'] = $somevalue
        $writeText['default_catalogue_link']= $somevalue
        $writeText['status'] = $somevalue
@fputcsv($fh, $writeText);
        @flush();
@fclose($fh);

某些值以零开头,例如 $writeText['sku']0987。 写入文件后。我在文件中收到987

如何防止这种情况发生?我需要零值。

任何帮助都会很有用。 提前致谢。

【问题讨论】:

  • 试试$writeText['sku'] = (string)$somevalue;
  • 如果这不起作用并且您知道所有 skus 都是 4 位数字,您可以使用 str_pad() 来保持前导零。或者我相信,如果您确保将值封装为 CSV 中的字符串(带引号),它们应该保留前导零。
  • (string)somevalue 不起作用。并非所有值都是 4 位数
  • 呃,您可能需要确保 CSV 中的数字包含在引号中。
  • 我也试过$writeText['sku'] = " ".$somevalue;,它不起作用。我不知道如何用 qoutes 封装 :-(

标签: php file fputcsv


【解决方案1】:

您是否使用 Excel 打开文件?因为 Excel 将其解释为数字。尝试使用文本编辑器打开并查看。

【讨论】:

  • 代码没有问题?检查所有那些错误抑制运算符! -.-
  • 对不起,我想说即使他没有以正确的格式看到数据,数据也可能仍在 csv 中。例如,我曾经尝试在 csv 上获取字符串“536775212172206080”,它显示为 5.37E+17,但当我使用文本编辑器检查时,数字仍然存在。
  • @Sanura 是的,你是对的。它在文本编辑器中正确显示,我想将该文件用作另一个应用程序的输入,它工作正常。 :-) 谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多