PHP在csv上载脚本中格式化列(美元符号)
我有一个脚本,可以上传一个csv文件,其中包含3列(电话、姓名、金额)。该脚本删除手机上的任何格式,即;()-并将文件放在服务器上。文件中的“金额”列显示的金额类似于125.00,我需要它显示125.00美元。任何帮助都将不胜感激PHP在csv上载脚本中格式化列(美元符号),php,csv,Php,Csv,我有一个脚本,可以上传一个csv文件,其中包含3列(电话、姓名、金额)。该脚本删除手机上的任何格式,即;()-并将文件放在服务器上。文件中的“金额”列显示的金额类似于125.00,我需要它显示125.00美元。任何帮助都将不胜感激 $file_destination = '/****/****/****/***/' . $file_name_new; $contents = file_get_contents($file_tmp); $contents = str_replace("(","
$file_destination = '/****/****/****/***/' . $file_name_new;
$contents = file_get_contents($file_tmp);
$contents = str_replace("(","",$contents);
$contents = str_replace(")","",$contents);
$contents = str_replace("-","",$contents);
file_put_contents($file_tmp, $contents);
if(move_uploaded_file($file_tmp, $file_destination)) {
无论您是要严格为输出重新格式化值,还是要将新的格式化数据存储在CSV文件中,使用
fgetcsv
和fputcsv
可能会更有效。这些函数用于正确读取和写入CSV格式的文件
例子
与其进行覆盖str_替换并可能删除有效字符,为什么不直接使用并将其转换为数组呢。然后您可以循环并编辑每个/任何列或值。然后使用fputcsv将数组写回。现在还不清楚您在问什么。是否要将存储在CSV文件中的值从
125.00
更改为125.00美元
,或者是否要输出格式相同的值?我需要金额以在其前面显示美元符号。如果可以简单地将第三列格式化为货币,那就太好了。如果“显示”的意思是“在电子表格软件中显示”,那么这实际上与PHP或CSV无关。CSV文件是简单、扁平、逗号分隔的值文件。它们没有嵌入的格式选项。您的电子表格软件可能有这样的显示选项,但这不是StackOverflow的问题。StackOverflow用于编程问题。
$rows = [];
if (($handle = fopen($file_tmp, "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
list($phone, $name, $amount) = $data;
$phone = str_replace(['(',')','-'], '', $phone);
$amount = sprintf('$%.2f', $amount);
// you can build a new array with the updated values
$rows[] = [$phone, $name, $amount];
// or output directly
echo "$phone | $name | $amount";
}
fclose($handle);
}
// if you want to save the destination with the updated information...
$fp = fopen($file_destination, 'w');
foreach ($rows as $fields) {
fputcsv($fp, $fields);
}
fclose($fp);