PHP附加csv换行符前面

时间:2014-04-18 20:15:36

标签: php csv

我有一个PHP脚本,可以将访问者数据记录到csv文件中。
我希望访问者数据将新信息附加到csv文件的第二行。
现在,新数据附加到文件的最底层,列表变得很长。

$cvsData = $ip  . "," . $host . "," . $os  . ","  . $currentDate . "," . $TIME ."\n";

$fp = fopen("C:\\WWW\\LOG\\LOG.CSV","a");

fwrite($fp,$cvsData); // Write information to the file
fclose($fp); // Close the file

2 个答案:

答案 0 :(得分:0)

这是可能的,但比简单地附加到文件更复杂:

您必须为此实施一个简短的例程:

  • 打开文件进行阅读,将内容读入缓冲区并关闭文件
  • 分隔第一(标题)行和文件的其余部分
  • 打开一个新的临时文件进行编写
  • 写标题行,然后是 new 行,然后是缓冲区的其余部分
  • 关闭临时文件
  • 最后将临时文件移动到最终名称和位置,从而覆盖旧文件

变体可能是将旧文件作为备份副本移到一边,并将新的临时文件移动到其位置。

答案 1 :(得分:0)

我认为'写到第二行'意思是'保留第一行并删除其他所有内容'而不是从第一行删除标题,将新数据作为第一行插入,并再次将标题写为第一行'

// get the first line
// http://stackoverflow.com/questions/4521936/quickest-way-to-read-first-line-from-file
$f = fopen($file, 'r');
$csvHead = fgets($f);
fclose($f);

// your data
$csvData = $ip  . "," . $host . "," . $os  . ","  . $currentDate . "," . $TIME ."\n";

// add your code to the end..

$f = fopen($file,"w");
fwrite($f,$csvHead); // Write information to the file
fwrite($f,$csvData); // Write information to the file
fclose($f); // Close the file

不是最好的代码,但应该有效,但您只有最新的访问者详细信息。

还有许多其他更好的解决方案来跟踪网站访问者(谷歌分析?),但你可以保持你当前的脚本不被修改,并检查'尾巴为win32' - 它允许您监视来自底部http://tailforwin32.sourceforge.net

的附加内容的文件