将数字保存为csv中的字符串

时间:2013-04-02 19:16:04

标签: php csv

我正在尝试将带有前导零的数字的列放入csv文件中,但它会不断截断前导零,我该怎么做才能保留它们?

以下是我正在使用的代码:

// fopen() here
function clean_zip($string){
    if(preg_match("/^\d{5,}/", $string)){
        $string = str_pad($string, 5, "0", STR_PAD_LEFT);
    }
    return $string;
}

while(($csv = fgetcsv($rhandle)) !== false){
    // other rows here
    $fcsv[9]  = (string)clean_zip($csv[9]);
    fputcsv($whandle, $fcsv);
}

3 个答案:

答案 0 :(得分:0)

我只需告诉Libre Office将列显示为Text列而不是它认为最适合列/单元格的列。

答案 1 :(得分:0)

正如评论中已经指出的那样,用双引号(")包装数字会产生类似"0123"的内容。

要做的是添加一份领先的单引号('),如文档中所述:

  

如果您决定直接输入数字作为文字,请输入撇号   (')首先。例如,列标题中的年份,您可以输入   ' 1999,' 2000和' 2001。撇号在细胞中是不可见的   仅表示该条目将被识别为文本。这是   例如,如果您输入电话号码或邮政编码,则非常有用   以零(0)开头,因为a开头为零(0)   以正常数字格式删除数字序列。

     

来源:Formatting Numbers as Text

现在将数据解析为字符串,这会导致它在函数中被忽略。

另一种方法是将列格式化为文本列。

答案 2 :(得分:-1)

用双引号字符(“)包装。如果您确定只有数字,这很容易 - 如果字符串中有引号可能需要更加小心。