我正在尝试将带有前导零的数字的列放入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);
}
答案 0 :(得分:0)
我只需告诉Libre Office将列显示为Text列而不是它认为最适合列/单元格的列。
答案 1 :(得分:0)
正如评论中已经指出的那样,用双引号("
)包装数字会产生类似"0123"
的内容。
要做的是添加一份领先的单引号('
),如文档中所述:
如果您决定直接输入数字作为文字,请输入撇号 (
'
)首先。例如,列标题中的年份,您可以输入 ' 1999,' 2000和' 2001。撇号在细胞中是不可见的 仅表示该条目将被识别为文本。这是 例如,如果您输入电话号码或邮政编码,则非常有用 以零(0)开头,因为a开头为零(0) 以正常数字格式删除数字序列。
现在将数据解析为字符串,这会导致它在函数中被忽略。
另一种方法是将列格式化为文本列。
答案 2 :(得分:-1)
用双引号字符(“)包装。如果您确定只有数字,这很容易 - 如果字符串中有引号可能需要更加小心。