1

したがって、次のような行を含む CSV ファイルがあります。

126404 "560-00877" "センター キャップ、グレード A、グレー、" 877 2 34.29 0

次のようにタイムスタンプ列を追加したいと思います。

126404 "560-00877" "センター キャップ、グレード A、グレー、" 877 2 34.29 0 2005-04-06

CSV ファイルを開き、各行にタイムスタンプを追加する単純な (r) php メソッドはありますか?

ありがとう!

4

4 に答える 4

0

これです?

$data = file("file.csv",FILE_IGNORE_NEW_LINES);
$fp = fopen("file_new.csv","w");
foreach((array)$data as $val) {
   fwrite($fp,$val." ".$timestamp."\r\n");   // build the $timestamp   
}
fclose($fp);
于 2012-06-06T10:43:40.413 に答える
0

ファイルの各行を配列に読み取り、書き戻すときに各行にタイムスタンプを追加できます。

$filename="/path/to/file.txt";

// Backup
if(!copy($filename, 'backup.txt')){
    die('Failed to backup!');
}

// Store file contents in array
$arrFile = file($filename);

// Open file for output
if(($fp = fopen($filename,'w')) === FALSE){
    die('Failed to open!');
}

// Write contents, inserting $data as second line
$currentLine = 0;
$cntFile = count($arrFile);
while( $currentLine <= $cntFile ){
    fwrite($fp, $arrFile[$currentLine].",".date('y-m-d').",\n");
    $currentLine++;
}

// Delete backup
unlink('backup.txt');

date('Y-M-D')ニーズに合わせて行を変更するだけです。

于 2012-06-06T10:37:24.563 に答える
0

標準関数で得られる最も近い方法は、解析/エスケープ作業を行う fgetcsv/fputcsv を使用することです。

$hSrc = fopen('path/to/file.csv', 'o');
if ($hSrc === false) {
    throw new Exception('Cannot open source file for reading!');
}

$hDest = fopen('path/to/new.csv', 'w');
if ($hDest === false) {
    throw new Exception('Cannot open destination file for writing!');
}

$timestamp = date('Y-m-d');

// reading source file into an array line by line
$buffer = 1000; // should be enough to accommodate the longest row
while (($row = fgetcsv($hSrc, $buffer, ' ')) !== false) {
    $data['timestamp'] = $timestamp;

    // writing that modified row into a new file
    if (fputcsv($hDest, $data, ' ') === false) {
        throw new Exception('Failed to write a CSV row!');
    }
}

fclose($hDest);
fclose($hSrc);
于 2012-06-06T10:51:31.913 に答える