以下是我的文件代码:
<?php 
$str="\n这是新增ab的内容!";
$rootDir=$_SERVER['DOCUMENT_ROOT'];
$filename = $rootDir.'/abc.txt';
$fopen=fopen($filename,'r+b');
/*
$fsize=filesize($filename)?filesize($filename):1;
$read = fread($fopen,$fsize); 
echo $read;
*/if(fwrite($fopen,$str))
{
echo '写入成功!';
}else{
echo '写入失败!';
}
fclose($fopen);
?>
abc.txt的文件很简单,用于测试的汉字:这是开头的字符有十一个在前面。php.ini里有这么一条max_execution_time,这个就是php的最大执行时间,即如果php页面在这个时间内没有完全执行完毕,就会报错,停止执行,目的当然是减少服务器的负担。
这是开头的字符有十一个在前面。php.ini里有这么一条max_execution_time,这个就是php的最大执行时间,即如果php页面在这个时间内没有完全执行完毕,就会报错,停止执行,目的当然是减少服务器的负担。

这种在文件头写入的,会出现前面8-20个左右的字符被覆盖掉(每次均不同字符被盖掉)并且乱码,如下:
这是新增ab的内容!桓鲈谇懊嬲馐强返淖址惺桓鲈谇懊嬲馐强返淖址惺桓鲈谇懊嬲馐强返淖址惺桓鲈谇懊嬲馐强返淖址惺桓鲈谇懊嬲馐强返淖址惺桓鲈谇懊嬲馐强返淖址惺桓鲈谇懊嬲馐强返淖址惺桓鲈谇懊嬲馐强返淖址惺桓鲈谇懊?
这是开头的字符有十一个在前面。php.ini里有这么一条max_execution_time,这个就是php的最大执行时间,即如果php页面在这个时间内没有完全执行完毕,就会报错,停止执行,目的当然是减少服务器的负担。
我用的编码是gb2312

解决方案 »

  1.   

    你想要的是$str 追加到文件最前面对吧.可是你使用 r+b 模式打开文件,写入的时候是替换的写入而不是插入
    ====
    这是开头的字符有十一个在前面。php.ini里有这么一条max_execution_time,这个就是php的最大执行时间,即如果php页面在这个时间内没有完全执行完毕,就会报错,停止执行,目的当然是减少服务器的负担。 
    这是开头的字符有十一个在前面。php.ini里有这么一条max_execution_time,这个就是php的最大执行时间,即如果php页面在这个时间内没有完全执行完毕,就会报错,停止执行,目的当然是减少服务器的负担。
    打开文件后游标将会在 [这]  第一个字节那位置.然后往后写,写到后面就会有很大概率出现一些文字乱码如果追加还是先读出后连接得到新的文本写会去
      

  2.   

    明白了,谢谢楼上!刚学到这个文件操作,PHP越来越有意思