5

我有一个 csv 文件,每行有 1 个电子邮件 ID。我想在每个电子邮件 ID 后添加逗号。我想使用 php 在每一行的末尾添加一个逗号。我怎样才能做到这一点?有特定的功能吗?

更新 我想要这个,以便我可以在javascript中构造一个数组。

我将使用 php 加载 csv 文件,然后在我的 js 中打印它。

var myCars=[<?php print $csv; ?>]; 

这样我就可以实现这样的目标。

var myCars=["Saab@gmail.com","Volvo@gmail.com","BMW@gmail.com"];

还是有更好的方法来做到这一点?

4

5 回答 5

5
$lines = file('file.csv');
foreach ( $lines as & $line ) {
    $line .= ',';
}
file_put_contents('file.new.csv', implode(PHP_EOL, $lines));

应该这样做,干杯

于 2012-04-06T13:28:13.910 回答
2
<?php
$lines = file('org.csv');
foreach ( $lines as & $line ) {
    $line = trim( $line ) . ',';
}
file_put_contents('new.csv', implode(PHP_EOL, $lines));
于 2012-04-06T13:43:57.193 回答
2

为什么不使用特定于 csv 的函数?

$old = fopen('file.csv','r');
$new = fopen('new.csv','w+');
while($line = fgetcsv($old))
{
    fputcsv($new,$line);
}
fclose($old);
fclose($new);

上面的代码会写一个新的csv,每行一行,但是如果你只是想生成一个javascript数组,为什么不这样做:

$file = fopen ('file.csv','r');
$all = array();
while($line = fgetcsv($file))
{
    $all[] = $line[0];//if there is only 1 field/line
    $all = array_merge($all,$line);//if multiple
}
fclose($file);
$js_array = '["'.implode('",',$all).'"];';
//or, the way I'd advise against, but good for multi-dimensional, assoc arrays
echo 'var array = JSON.parse("'.json_encode($all).'");';
于 2012-04-06T13:55:25.577 回答
2

为什么不只是

$csv = str_replace("\n", ",\n", $csv);
于 2012-04-06T13:57:23.253 回答
2

您可以使用 fgetcsv 函数将文件导入数组,然后使用 json_encode() 将其回显,而不是回显整个 csv 字符串。这样你肯定会得到一个有效的 javascript 数组。它还将为您引用和编码任何字符串。

哦,记得通过一些迭代器运行数组,它将在所有字符串上运行 utf8_encode。如果你有无效的 utf8 字符,json_encode 会出错。

php.net 上有很多关于不同部分的示例,但如果需要,我可以提供一些示例。

于 2012-04-06T14:32:53.767 回答