【问题标题】:PHP Add string to line 2PHP将字符串添加到第2行
【发布时间】:2012-01-22 16:53:51
【问题描述】:

我想在myfile.csv的第二行添加一个字符串(一个DOM元素的值-$entry = stripslashes($_GET["nameofmytextarea"]);)(以免删除表头)。

我不关心 CSV 的东西,一切都已经格式化了。只需将其视为添加到文本文件中的文本字符串即可。

我不想要任何复杂的东西,只需跳过第一行并在第二行上方“追加”:在标题下方但在所有其他 CSV 行上方。

这有多难?

【问题讨论】:

  • 快到 2012 年了,你还在magic_quotes_gpc一起跑?

标签: php file csv append


【解决方案1】:
$contents = explode("\n", file_get_contents('myfile.csv'), 2);
file_put_contents('myfile.csv', $contents[0]."\n".$entry."\n".$contents[1]);

如果行由 unix-lineendings 分隔,这应该可以工作。
如果文件最初看起来像这样:

header
content
content2

代码使用$entry = 'test'; 运行,之后会如下所示:

header
test
content
content2

【讨论】:

  • 是的,这行得通,我不知道你能做到。感谢您帮助一个 n00b 人!
  • 没问题 :) 这就是我们在这里的原因。
  • 请务必检查$contents[1] 是否已设置,否则文件末尾会出现一个空行和E_NOTICE - 这就是我更喜欢@ 的原因之一987654327@接近...
【解决方案2】:

file()array_splice() 的组合是您需要的:

function prepend_to_csv ($file, $line) {
  if (!$data = file($file)) {
    return FALSE;
  }
  array_splice($data, 1, 0, $line.PHP_EOL);
  return (bool) file_put_contents($file, $data);
}

if (prepend_to_csv('myfile.csv', "this,is,some,data")) {
  echo 'Success';
} else {
  echo 'Fail';
}

由于此方法的工作方式,您需要确保自己手动将 EOL 添加到新行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-21
    • 1970-01-01
    • 2011-04-03
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多