我用PHP打开一个包含中文的文本文件,想读取其中的一部分文本:
fseek($fp, 1000);
fread($fp, 1024);
我发现把其中的1000改变下有时读取的是乱码,有时读取的是正确的。这是什么原因?是不是因为文件里包含了英文,而中文占两字节英文占一字节导至设置文件指针出问题?由于文本文件比较大,为了提高性能我不想用filegetcontents,不知道有什么办法实现?
fseek($fp, 1000);
fread($fp, 1024);
我发现把其中的1000改变下有时读取的是乱码,有时读取的是正确的。这是什么原因?是不是因为文件里包含了英文,而中文占两字节英文占一字节导至设置文件指针出问题?由于文本文件比较大,为了提高性能我不想用filegetcontents,不知道有什么办法实现?
解决方案 »
- 关于php的post
- PHP查询问题
- mysql front配置
- (狂送分)急~~~~哪里能下载163摄影版和poco那样的照片管理程序????
- 我数据表里面有五个记录,为什么循环出来的不是横的,怎么是竖的呢?有什么办法搞成横的呢?
- 写PHP程序,大家用什么编辑器的?
- 在Red Hat Linux 9+Apache2.0.48+php4.3.4+ZendOptimizer2.1.0b MySQL5.0.0-0+Tomcat5.0.16+ j2sdk1.4.2.03整合
- 关于session
- 请问:怎么样可以使得php中的变量跨页面使用?
- 谁有PHP的信息反馈程序?简单点的
- 正则问题
- php如何处理xml
然后读取文本。
做个判断字符的函数fseek($fp, cut_str(1000));
//其中cut_str是你要写的判断函数
或
定位后先把这一行全取出来用fseek($fp,10000); $n=filesize('data.txt')>1000?1000:filesize('data.txt');
fseek($fp,-$n,SEEK_CUR);
while($line=fread($fp,$n)){
if(preg_match("/.+\r?\n+([^\r\n]+)$/",$line,$matches)){
$text=$matches[1]; //这就是文本中你所定位的那一行数据
break;
}
fseek($fp,-$n*2,SEEK_CUR);
}
$x=10000;
fseek($fp,$x);
$n=$x>1000?1000:$x;
fseek($fp,-$n,SEEK_CUR);
while($line=fread($fp,$n)){
if(preg_match("/.+\r?\n+([^\r\n]+)$/",$line,$matches)){
$text=$matches[1]; //这就是文本中你所定位的那一行数据
break;
}
fseek($fp,-$n*2,SEEK_CUR);
}
//其中cut_str是你要写的判断函数
这个怎么实现?我是要定位到指定位置的字符但不知道是什么字符.
比如一个文件里有:aaa中文bbb
如果用fseek($fp,4)的话就定位到了'中'字的中间了(因为'中'由两个字节组成),这样读取就有乱码的.
我就想知道这个问题怎么解决.