当前位置:Gxlcms > PHP教程 > PHP读取和修改大文件的某行内容的代码_PHP教程

PHP读取和修改大文件的某行内容的代码_PHP教程

时间:2021-07-01 10:21:17 帮助过:27人阅读

代码如下:
  1. <br>$fp = fopen('d:/file.txt', 'r+'); <br>if ($fp) { <br>$i = 1; <br>while (!feof($fp)) { <br>//修改第二行数据 <br>if ($i == 2) { <br>fseek($fp, 2, SEEK_CUR); <br>fwrite($fp, '#'); <br>break; <br>} <br>fgets($fp); <br>$i++; <br>} <br>fclose($fp); <br>} <br> <br>这里需要注意的是fgets获取到一行后,文件指针指向行尾(也就是下一行开头),所以fwrite操作的是fgets后的下一行开头,至于从该行的第几个字符开始写,可以使用fseek函数来移动文件指针。另外一个需要注意的是,这里fwrite写入是执行替换操作,而不是插入操作,所以指针后面的字符会一个个被替换掉。至于怎么插入我就没研究了。估计很困难。为了效率可能只能写入另外一个临时文件了,不知道有没有其他更好的方法。 <br><br>  另外今天还看到了使用SPL进行操作的方法: <br><span style="CURSOR: pointer" onclick="doCopy('code75905')"><u></u></span> 代码如下:<pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><br>$fp = new SplFileObject('d:/file.txt', 'r+'); <br>//转到第二行, seek方法参数从0开始计数, 经我测试指针指向行尾了, 所以修改的是第三行 <br>$fp->seek(1); <br>//获取当前行内容(第二行) <br>$line = $fp->current(); <br>//下面是对第三行的操作 <br>$fp->fseek(2, SEEK_CUR); <br>$fp->fwrite('#'); <br> <br>  SplFileObject提供的方法比基本的文件操作函数更丰富一些,包括采用key/value方法遍历文件行等。SPL应该是PHP5增加进去的吧,还有其他很多很有用的对象。包括数组、文件目录操作、异常处理、一些基本类型操作等,这些功能还在陆续增加,可以通过继承SPL扩展这些方法让我们处理底层的操作更方便。</li><li><p></p></li><li><p align="left"><span id="url" itemprop="url">http://www.bkjia.com/PHPjc/320724.html</span><span id="indexUrl" itemprop="indexUrl">www.bkjia.com</span><span id="isOriginal" itemprop="isOriginal">true</span><span id="isBasedOnUrl" itemprop="isBasedOnUrl">http://www.bkjia.com/PHPjc/320724.html</span><span id="genre" itemprop="genre">TechArticle</span><span id="description" itemprop="description"> 代码如下:</span></p><pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li>$fp = fopen('d:/file.txt', 'r+'); if ($fp) { $i = 1; while (!feof($fp)) { //修改第二行数据 if ($i == 2) { fseek($fp, 2, SEEK_CUR); fwrite($fp, '#'...<p></p></li><li> </li></ol></pre></li></ol></pre>

人气教程排行