PHP - 在文本文件中添加行会覆盖旧行。还有奇怪的:文本文件中的字符?

时间:2017-12-20 08:27:10

标签: php fwrite

在文本文件中添加一行的最佳方法是什么?当我运行下面的代码时,它会覆盖所有行。

此外,当添加一行时,它包含一些“s:4:”& s:60:字符。这是什么意思?我只想将$photourl添加到urls.txt

<?php
  foreach ($_POST['photoselect'] as $photourl) {
   file_put_contents($target_dir . '/urls.txt', $photourl);
   $fp = fopen($target_dir . '/urls.txt','w'); 
   fwrite($fp,serialize($photourl));
  }
?>

2 个答案:

答案 0 :(得分:1)

打开文件时,最后一个参数表示您希望如何设置文件指针。使用'w',这会截断文件,你可能想要'a',这意味着将指针放在文件的末尾。 (见http://php.net/manual/en/function.fopen.php模式)

除非你的内容包含特殊字符,否则只需编写它而不是serialize

您的代码每次都会覆盖文件......

$fp = fopen($target_dir . '/urls.txt','a'); 
foreach ($_POST['photoselect'] as $photourl) {
     fwrite($fp,$photourl.PHP_EOL);
}
fclose($fp);

答案 1 :(得分:1)

您可以附加file_put_contents
file_put_contents($target_dir . '/urls.txt', $photourl, FILE_APPEND);