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);
posted @ 2017-02-19 23:33  除除  阅读(495)  评论(1编辑  收藏  举报