当前位置:  开发笔记 > 编程语言 > 正文

需要用PHP在文件的开头写

如何解决《需要用PHP在文件的开头写》经验,为你挑选了2个好方法。

我正在制作这个程序,我试图找出如何将数据写入文件的开头而不是结束."a"/ append只写到最后,我怎么能写到开头呢?因为"r +"会这样做但会覆盖以前的数据.

$datab = fopen('database.txt', "r+");

这是我的整个文件:



    
        Facebook v0.1
        
    

    
        
First Name :
Last Name :
Comment :
form; if((!empty($fname)) && (!empty($lname)) && (!empty($comment))){ $form = << $fname $lname : $comment come; $datab = fopen('database.txt', "r+"); fputs($datab, $form); fclose($datab); }else if((empty($fname)) && (empty($lname)) && (empty($comment))){ print" please input data"; } // end table $datab = fopen('database.txt', "r"); while (!feof($datab)){ $gfile = fgets($datab); print "$gfile"; }// end of while ?>

Ben Regenspa.. 54

快速又脏:


我认为没有更好的方法在文件的开头插入数据.您无论如何都必须移动文件中当前包含的所有数据.对于较大的文件,您可能需要逐个读取文件以使其适合内存. (2认同)


Jordan Runni.. 39

如果您不想将文件的全部内容加载到变量中,可以使用PHP的Streams功能:

function prepend($string, $orig_filename) {
  $context = stream_context_create();
  $orig_file = fopen($orig_filename, 'r', 1, $context);

  $temp_filename = tempnam(sys_get_temp_dir(), 'php_prepend_');
  file_put_contents($temp_filename, $string);
  file_put_contents($temp_filename, $orig_file, FILE_APPEND);

  fclose($orig_file);
  unlink($orig_filename);
  rename($temp_filename, $orig_filename);
}

这样做是将要添加的字符串写入临时文件,然后将原始文件的内容写入临时文件的末尾(使用流而不是将整个文件复制到变量中),然后删除原始文件并重命名临时文件以替换它.

注意:此代码最初基于Chao Xu现已解散的博客文章.代码已经分歧,但原始帖子可以在Wayback Machine中查看.



1> Ben Regenspa..:

快速又脏:



我认为没有更好的方法在文件的开头插入数据.您无论如何都必须移动文件中当前包含的所有数据.对于较大的文件,您可能需要逐个读取文件以使其适合内存.

2> Jordan Runni..:

如果您不想将文件的全部内容加载到变量中,可以使用PHP的Streams功能:

function prepend($string, $orig_filename) {
  $context = stream_context_create();
  $orig_file = fopen($orig_filename, 'r', 1, $context);

  $temp_filename = tempnam(sys_get_temp_dir(), 'php_prepend_');
  file_put_contents($temp_filename, $string);
  file_put_contents($temp_filename, $orig_file, FILE_APPEND);

  fclose($orig_file);
  unlink($orig_filename);
  rename($temp_filename, $orig_filename);
}

这样做是将要添加的字符串写入临时文件,然后将原始文件的内容写入临时文件的末尾(使用流而不是将整个文件复制到变量中),然后删除原始文件并重命名临时文件以替换它.

注意:此代码最初基于Chao Xu现已解散的博客文章.代码已经分歧,但原始帖子可以在Wayback Machine中查看.

推荐阅读
mobiledu2402851203
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有