PHP文本的读写
1 <?php 2 $txtPart="test0.txt"; //export 3 $txtPartContent=fopen($txtPart,"r"); //读文件,返回TRUE,FALSE 4 if($txtPartContent){ //若文件存在继续 5 while(!feof($txtPartContent)){ //feof函数检查是否已到达 "end-of-file" (EOF),遍历文本 6 $txtPartContentLine=fgets($txtPartContent); //fgets() 函数用于从文件读取单行,文件指针会移动到下一行 7 $key=mb_substr($txtPartContentLine,0,17); //mb_substr(A,B,C) C:中文是两个字节 8 $myArr[$key]=$txtPartContentLine; //循环生成数组 9 } 10 fclose($txtPartContent); //关闭读文件 11 } 12 13 $txtWrite="write0.txt"; 14 $txtWriteContent=fopen($txtWrite,"w"); //打开写文件 15 16 $i=0; 17 $txtMain="test1.txt"; //tempor 18 $txtMainContent=fopen($txtMain,"r"); 19 if ($txtMainContent){ 20 while(!feof($txtMainContent)){ 21 $isVerify=false; //默认不是核实人 22 $txtMainContentLine=fgets($txtMainContent); 23 $keyCompare=mb_substr($txtMainContentLine,0,17); 24 foreach($myArr as $x=>$x_value){ //循环遍历数组 25 if($keyCompare==$x){ //如果前17个字节一样,输出数组那行,(数组被匹配) 26 echo $x_value; 27 fwrite($txtWriteContent,$x_value); //写入被匹配的数组值 28 $i=$i+1; //记录匹配到的次数 29 $isVerify=true; //如果匹配成功则确认为核实人 30 } 31 } 32 if($isVerify==false){ 33 echo $txtMainContentLine; 34 fwrite($txtWriteContent,$txtMainContentLine); 35 } 36 echo "<br/>"; 37 } 38 fclose($txtMainContent); 39 } 40 41 fclose($txtWriteContent); 42 43 echo "Yep!".$i; 44 ?>
读文件:
$myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");
echo fread($myfile,filesize("webdictionary.txt"));
fclose($myfile);
写文件:
$myfile = fopen("newfile.txt", "w") or die("Unable to open file!");
$txt = "First Line";
fwrite($myfile, $txt);
$txt = "Second Line";
fwrite($myfile, $txt);
fclose($myfile);
中文截取:mb_substr()
mb_substr( $str, $start, $length, $encoding )
$str,需要截断的字符串
$start,截断开始处,起始处为0
$length,要截取的字数
$encoding,网页编码,如utf-8,GB2312,GBK
(PS:mb_substr第四个参数编码格式我没有加,不知道加完以后是怎么样)
测试:
$txtTest="我只是一个测试,今天是2017-02-19,-Mazey";
$txt1=mb_substr($txtTest,0,10);
$txt2=mb_substr($txtTest,0,10,'utf-8');
$txt3=mb_substr($txtTest,2,10,'utf-8');
echo $txt1."<br/>";
echo $txt2."<br/>";
echo $txt3."<br/>";
输出:
我只是一个
我只是一个测试,今天?
是一个测试,今天是20
分析:
$txt2后面出现一个乱码,难道是因为中文下的","只占一个字节,然后另一个中文输出了一半?
再次测试:
$txtTest="我只是一个测试哈今天是哈2017-02-19,-Mazey";
$txt2=mb_substr($txtTest,0,10,'utf-8');
echo $txt2."<br/>";
输出:
我只是一个测试哈今天?
分析:
编码参数换成"GBK"后可以正常显示,可能含中文的话就要用"GBK",也可能与代码编码格式有关,后续遇到问题或者问问其他同事吧。
今天先睡觉了。:)
$myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!"); echo fread($myfile,filesize("webdictionary.txt")); fclose($myfile);
Blog: https://blog.mazey.net/