<?php
$txtPart="test0.txt"; //export
$txtPartContent=fopen($txtPart,"r"); //读文件,返回TRUE,FALSE
if($txtPartContent){ //若文件存在继续
while(!feof($txtPartContent)){ //feof函数检查是否已到达 "end-of-file" (EOF),遍历文本
$txtPartContentLine=fgets($txtPartContent); //fgets() 函数用于从文件读取单行,文件指针会移动到下一行
$key=mb_substr($txtPartContentLine,0,17); //mb_substr(A,B,C) C:中文是两个字节
$myArr[$key]=$txtPartContentLine; //循环生成数组
}
fclose($txtPartContent); //关闭读文件
} $txtWrite="write0.txt";
$txtWriteContent=fopen($txtWrite,"w"); //打开写文件 $i=0;
$txtMain="test1.txt"; //tempor
$txtMainContent=fopen($txtMain,"r");
if ($txtMainContent){
while(!feof($txtMainContent)){
$isVerify=false; //默认不是核实人
$txtMainContentLine=fgets($txtMainContent);
$keyCompare=mb_substr($txtMainContentLine,0,17);
foreach($myArr as $x=>$x_value){ //循环遍历数组
if($keyCompare==$x){ //如果前17个字节一样,输出数组那行,(数组被匹配)
echo $x_value;
fwrite($txtWriteContent,$x_value); //写入被匹配的数组值
$i=$i+1; //记录匹配到的次数
$isVerify=true; //如果匹配成功则确认为核实人
}
}
if($isVerify==false){
echo $txtMainContentLine;
fwrite($txtWriteContent,$txtMainContentLine);
}
echo "<br/>";
}
fclose($txtMainContent);
} fclose($txtWriteContent); echo "Yep!".$i;
?>

读文件:

$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);

PHP文本的读写的更多相关文章

  1. 重新想象 Windows 8 Store Apps (23) - 文件系统: 文本的读写, 二进制的读写, 流的读写, 最近访问列表和未来访问列表

    原文:重新想象 Windows 8 Store Apps (23) - 文件系统: 文本的读写, 二进制的读写, 流的读写, 最近访问列表和未来访问列表 [源码下载] 重新想象 Windows 8 S ...

  2. 背水一战 Windows 10 (89) - 文件系统: 读写文本数据, 读写二进制数据, 读写流数据

    [源码下载] 背水一战 Windows 10 (89) - 文件系统: 读写文本数据, 读写二进制数据, 读写流数据 作者:webabcd 介绍背水一战 Windows 10 之 文件系统 读写文本数 ...

  3. python中文本的读写操作

    文本的操作 函数的排序操作: def func(i): return i[2] list=[('曹操',101,'c'),('吕布',100,'d'),('刘备',200,'l'),('大乔',50, ...

  4. IO流-文本IO\读写二进制数据

    文本IO 一.简述 OutputStreamWriter类使用选定的编码方式吧Unicode字符流转换为字节流,InputStreamReader类将包含字节的输入流转为可以产生Unicode字符的读 ...

  5. JAVA File方法文本复制读写-解决中文乱码

    import java.io.*; public class TextFile { public static void main(String[] args) throws Exception { ...

  6. c++ 以二进制和以文本方式读写文件的区别

    在c++项目开发中,时常涉及到文件读写操作.因此在这里先简单梳理和回顾一下文本模式和二进制模式在进行文件读写上的区别. 1.linux平台下文本文件和二进制文件的读写 在linux平台下进行文件读写时 ...

  7. C++对txt文本进行读写操作

    输入输出,是每个程序员的基本功,尤其是对文本的输入和输出.最近,自己在这方面做了一些总结,不是很全面,希望在以后学习和工作的过程中慢慢补充,积累点点滴滴.P.S. 今天天气不错,雾霾散了,天空晴朗,惠 ...

  8. FileStream对文本进行读写操作

    class FileHelper { /// <summary> /// 检验文件路径是否合法 /// </summary> /// <param name=" ...

  9. C语言中以文本方式读写文件时换行符转换的注意事项

    我们知道在UNIX下是没有回车符(\r)的,只有换行符(\n),而C语言诞生于UNIX(Linux即面向开源的UNIX,Mac OS也是UNIX发展而来的,而Windows是从MS-DOS发展而来,与 ...

随机推荐

  1. 仿网易邮箱5.0(四):信息提示插件(tips.js)

    信息提示插件,在平常的开发中也是经常乃至的一个插件,像是一些辅助信息的提示,如:加载成功.提交信息成功或失败等等.这个插件在163邮箱中用在切换标签时提示加载状态. 下面我们先来分析一下这个小插件需要 ...

  2. 文本切换器(TextSwitcher)的功能和用法

    TextSwitcher继承了ViewSwitcher,因此它具有与ViewSwitcher相同的特征:可以在切换View组件的同时使用动画效果.与ImageSwitcher相似的是,使用TextSw ...

  3. Cracking the code interview

    推荐一本书<Cracking the code interview> Now in the 5th edition, Cracking the Coding Interview gives ...

  4. 删除坐标相同文本对象 按照原y坐标排序

    ;; ;;程序名称:对象水平对齐程序,并且按照竖直方向排列 ;;执行命令:tb2 ;;程序功能:将选定的对象左对齐,并且按照竖直方向排列. ;; (defun c:tb2(/ selobjs oldc ...

  5. JDK源码分析-Integer

    Integer是平时开发中最常用的类之一,但是如果没有研究过源码很多特性和坑可能就不知道,下面深入源码来分析一下Integer的设计和实现. Integer: 继承结构: -java.lang.Obj ...

  6. quagga源码学习--BGP协议对等体连接tcp md5签名认证选项

    bgp使用tcp连接,每个bgp实例自身是peer的一个tcp server端,同时也是peer的tcp client端. 1.在bgp_create之后都建立自己的socket服务端开始监听179端 ...

  7. Nginx工作原理

    Nginx的模块 Nginx由内核和模块组成. Nginx的模块从结构上分为核心模块.基础模块和第三方模块: 核心模块:HTTP模块.EVENT模块和MAIL模块 基础模块:HTTP Access模块 ...

  8. java线程之生产者消费者

    看了毕向东老师的生产者消费者,就照着视频参考运行了一下,感觉还好 这个值得学习的是条理特别清晰: ProducterConsumerDemo.java中,一个资源类Resources,生产者消费者都可 ...

  9. java-4-类和对象

    一.以下代码为何无法通过编译?哪儿出错了? 错误:只定义了一个有参数的构造函数.而在主函数中定义的Foo类对象调用的是无参数的构造函数. 更改后: 二.多当个类之间有继承关系时,创建子类对象会导致父类 ...

  10. vue路由表(简单)

    import Vue from 'vue'import VueRouter from 'vue-router'Vue.use(VueRouter) const first = { template: ...