5

各行に1つの電子メールIDを持つcsvファイルがあります。各メール ID の後にコンマを追加したい。PHPを使用して、各行の末尾にカンマを追加したいと考えています。これどうやってするの?そのための特定の機能はありますか?

UPDATE 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

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 文字列全体をエコーする代わりに、fgetcsv 関数を使用してファイルを配列にインポートし、json_encode() を使用してエコーアウトすることができます。そうすれば、有効な JavaScript 配列を確実に取得できます。また、文字列を引用してエンコードします。

ああ、すべての文字列で utf8_encode を実行するイテレータを介して配列を実行することを忘れないでください。無効な utf8 文字がある場合、json_encode は barf します。

これのさまざまな部分を実行する php.net には多くの例がありますが、必要に応じていくつかの例を提供できます。

于 2012-04-06T14:32:53.767 に答える
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 = str_replace("\n", ",\n", $csv);
于 2012-04-06T13:57:23.253 に答える