复制代码 代码如下:<?php

classCtbClass{

var$file;

var$index;

//建立一个文件并写入输入

functionnull_write($new)

{

$f=fopen($this->file,"w");

flock($f,LOCK_EX);

fputs($f,$new);

fclose($f);

}

//添加数据记录到文件末端

functionadd_write($new){

$f=fopen($this->file,"a");

flock($f,LOCK_EX);

fputs($f,$new);

fclose($f);

}

//配合readfile()的返回一起使用,把一行数据转换为一维数组

functionmake_array($line){

$array=explode("\x0E",$line);

return$array;

}

//把为一维数组转换一行数据

functionjoin_array($line){

$array=join("\x0E",$line);

return$array;

}

//返回数据文件的总行数

functiongetlines(){

$f=file($this->file);

returncount($f);

}

//返回下一行的数据记录(备用)

functionnext_line(){

$this->index=$this->index++;

return$this->get();

}

//返回上一行的数据记录(备用)

functionprev_line(){

$this->index=$this->index--;

return$this->get();

}

//返回当前行的数据记录数据较小

functionget(){

$f=fopen($this->file,"r");

flock($f,LOCK_SH);

for($i=0;$i<=$this->index;$i++){

$rec=fgets($f,1024);

}

$line=explode("\x0E",$rec);

fclose($f);

return$line;

}

//返回当前行的数据记录数据较大

functionget_big_file(){

$f=fopen($this->file,"r");

flock($f,LOCK_SH);

for($i=0;$i<=$this->index;$i++){

$rec=fgets($f,1024*5);

}

$line=explode("\x0E",$rec);

fclose($f);

return$line;

}

//打开数据文件---以一维数组返回文件内容

functionread_file(){

if(file_exists($this->file)){

$line=file($this->file);

}

return$line;

}

//打开数据文件---以二维数组返回文件内容

functionopenFile(){

if(file_exists($this->file)){

$f=file($this->file);

$lines=array();

foreach($fas$rawline){

$tmpline=explode("\x0E",$rawline);

array_push($lines,$tmpline);

}

}

return$lines;

}

//传入一个数组,合并成一行数据,重写整个文件

functionoverwrite($array){

$newline=implode("\x0E",$array);

$f=fopen($this->file,"w");

flock($f,LOCK_EX);

fputs($f,$newline);

fclose($f);

}

//添加一行数据记录到文件末端

functionadd_line($array,$check_n=1){

$s=implode("\x0E",$array);

$f=fopen($this->file,"a");

flock($f,LOCK_EX);

fputs($f,$s);

if($check_n==1)fputs($f,"\n");

fclose($f);

}

//插入一行数据记录到文件最前面

functioninsert_line($array){

$newfile=implode("\x0E",$array);

$f=fopen($this->file,"r");

flock($f,LOCK_SH);

while($line=fgets($f,1024)){

$newfile.=$line;

}

fclose($f);

$f=fopen($this->file,"w");

flock($f,LOCK_EX);

fputs($f,$newfile);

fclose($f);

}

//更新所有符合条件的数据记录,适用于每行字节数据较大的情况

functionupdate($column,$query_string,$update_array){

$update_string=implode("\x0E",$update_array);

$newfile="";

$fc=file($this->file);

$f=fopen($this->file,"r");

flock($f,LOCK_SH);

for($i=0;$i

$list=explode("\x0E",$fc[$i]);

if($list[$column]!=$query_string){

$newfile=$newfile.chop($fc[$i])."\n";

}else{

$newfile=$newfile.$update_string;

}

}

fclose($f);

$f=fopen($this->file,"w");

flock($f,LOCK_EX);

fputs($f,$newfile);

fclose($f);

}

//更新所有符合条件的数据记录,适用于每行字节数据较小的情况

functionupdate2($column,$query_string,$update_array){

$newline=implode("\x0E",$update_array);

$newfile="";

$f=fopen($this->file,"r");

flock($f,LOCK_SH);

while($line=fgets($f,1024)){

$tmpLine=explode("\x0E",$line);

if($tmpLine[$column]==$query_string){

$newfile.=$newline;

}else{

$newfile.=$line;

}

}

fclose($f);

$f=fopen($this->file,"w");

flock($f,LOCK_EX);

fputs($f,$newfile);

fclose($f);

}

//删除所有符合条件的数据记录,适用于每行字节数据较大的情况

functiondelete($column,$query_string){

$newfile="";

$fc=file($this->file);

$f=fopen($this->file,"r");

flock($f,LOCK_SH);

for($i=0;$i

$list=explode("\x0E",$fc[$i]);

if($list[$column]!=$query_string){

$newfile=$newfile.chop($fc[$i])."\n";

}

}

fclose($f);

$f=fopen($this->file,"w");

flock($f,LOCK_EX);

fputs($f,$newfile);

fclose($f);

}

//删除所有符合条件的数据记录,适用于每行字节数据较小的情况

functiondelete2($column,$query_string){

$newfile="";

$f=fopen($this->file,"r");

flock($f,LOCK_SH);

while($line=fgets($f,1024)){

$tmpLine=explode("\x0E",$line);

if($tmpLine[$column]!=$query_string){

$newfile.=$line;

}

}

fclose($f);

$f=fopen($this->file,"w");

flock($f,LOCK_EX);

fputs($f,$newfile);

fclose($f);

}

//取得一个文件里某个字段的最大值

functionget_max_value($column){

$tlines=file($this->file);

for($i=0;$i<=count($tlines);$i++){

$line=explode("\x0E",$tlines[$i]);

$get_value[]=$line[$column];

}

$get_max_value=max($get_value);

return$get_max_value;

}

//根据数据文件的某个字段是否包含$query_string进行查询,以二维数组返回所有符合条件的数据

functionselect($column,$query_string){

$tline=$this->openfile();

$lines=array();

foreach($tlineas$line){

if($line[$column]==$query_string){

array_push($lines,$line);

}

}

return$lines;

}

//功能与functionselect()一样,速度可能略有提升

functionselect2($column,$query_string){

if(file_exists($this->file)){

$tline=$this->read_file();

foreach($tlineas$tmpLine){

$line=$this->make_array($tmpLine);

if($line[$column]==$query_string){

$lines[]=$tmpLine;

}

}

}

return$lines;

}

//根据数据文件的某个字段是否包含$query_string进行查询,以一维数组返回第一个符合条件的数据

functionselect_line($column,$query_string){

$tline=$this->read_file();

foreach($tlineas$tmpLine){

$line=$this->make_array($tmpLine);

if($line[$column]==$query_string){

return$line;

break;

}

}

}

//selectnext/prevline(next_prev==>1/next,2/prev)bycx

functionselect_next_prev_line($column,$query_string,$next_prev){

$tline=$this->read_file();

$line_key_end=count($tline)-1;

$line_key=-1;

foreach($tlineas$tmpLine){

$line_key++;

$line=$this->make_array($tmpLine);

if($next_prev==1){//next?

if($line[$column]==$query_string){

if($line_key==0){

return0;

}else{

$line_key_up=$line_key-1;

return$up_line;

}

}else{

$up_line=$line;

}

}elseif($next_prev==2){//prev?

if($line[$column]==$query_string){

if($line_key==$line_key_end){

return0;

}else{

$line_key_down=$line_key+1;

break;

}

}

}else{

return0;

}

}

$down_line=$this->make_array($tline[$line_key_down]);

return$down_line;

}

}

?>

php文本文件操作,PHP文本操作类相关推荐

  1. NodeJs基础之字节操作、路径操作和文本操作

    字节操作 buffer对象 构造函数 new Buffer(size) 参数为数值,表示分配空间的长度 new Buffer(string,[encoding]) 参数为字符串,表示存入Buffer的 ...

  2. 操作EXCEL和符号分隔文本的类CSpreadSheet .

    操作EXCEL和符号分隔文本的类CSpreadSheet 此文为转发网上文档! http://www.oschina.net/question/76782_12420 简介 CSpreadSheet是 ...

  3. php文本教学,php中文本操作的类

    给大家一个简单的文本操作的类. 我以前写的,不过一直都没机会用了,文本不如数据库.数据是以行保存的,以\n结尾,注意你输入的数据必须以"\n"结尾的,这是几个最基本的类成员,文本的 ...

  4. 火山视窗文本数组类增删查改操作

    本源码转载自利快云https://www.lkuaiy.com/ 火山视窗文本数组类增删查改操作     文本数组类可对文本型数据进行数组操作,本类可以非常方便的实现对文本数组的增删查改.   一.添 ...

  5. HTML中设置鼠标悬停状态伪类,四大伪类,css鼠标样式设置,reset操作,静止对文本操作...

    本文将要为您介绍的是四大伪类,css鼠标样式设置,reset操作,静止对文本操作,教程操作方法:07.31自我总结 一.a标签的四大伪类 a:link{样式} 未访问时的状态(鼠标点击前显示的状态) ...

  6. 【Delphi入门】文件系统(文件分类 文件文本变量 文件操作 文件流操作)

    文件分类 文本文件(TextFile) & 二进制文件(Flie) 二进制形式存放数据占有存储空间较少,但不直观:文本文件与之相反 文件是由相同类型的数据元素组成的序列.在DELPHI中对文件 ...

  7. Visual C++——《可视化编程技术》实验报告——绘图与文本操作

    一.实验目的和要求 1.掌握Windows应用程序的基本结构: 2.使用API函数建立窗口.消息循环,编制窗口函数: 3.使用API函数在用户区绘图.输出文本,理解Windows的图形设备接口. 二. ...

  8. VC++编程中的文件操作API和CFile类

    VC++编程中的文件操作API和CFile类 在VC编程中,操作文件的方法主要有两种:利用API函数和MFC的CFile类.微软在其中封装了文件的一般操作,下面我就介绍一下如何利用这两种方法实现文件操 ...

  9. 文本操作的相关概念和方法+pickle序列化+csv文件操作+操作系统命令(os和os.path)+shutil模块+zipfile模块+递归算法打印目录树

    目录 一.文件操作 1.文本文件和二进制文件 2.文件操作相关模块概述 3.文件文本的写入 4.中文乱码问题的解决 5.close()关闭文件流--try异常管理 6.关闭流要点:_with上下文管理 ...

最新文章

  1. 网络分流器-网络分流器IP网络路由交换测试技术探讨
  2. 你是合格的程序员吗?(欢迎大家自测)
  3. 记下来 关于InitCommonControls()
  4. z = x++ - --y * b/a;
  5. 库存管理-历史库存和收发存系列-MB5B
  6. 基于LAMP实现web日志管理查看
  7. java 内存快照怎么看_jvm内存快照dump文件太大,怎么分析
  8. linux网络IO模型
  9. 如何防止盗号 使用windows自带的 屏幕键盘 OSK
  10. 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。
  11. Oracle分页查询
  12. 光立方体c语言程序,444光立方程序C语言源代码 - 444光立方程序怎么写 光立方原理图、源代码及制作教程...
  13. 基于Javaweb校园二手交易平台源码及截图
  14. ie8 ajax 缓存问题,IE8/IE9下Ajax缓存问题
  15. 智能家居系统解决方案
  16. 微信小程序之电子商场的设计以及实现
  17. 图片如何缩小到100k?怎么把图片压缩到指定大小?
  18. TypeScript(ts)笔记总结01
  19. 蓝桥杯2022年第十三届决赛真题-修路
  20. k8s 部署 TCP node应用

热门文章

  1. Python入门篇-functools
  2. Android应用实例收藏管理
  3. 超融合刚刚好——蓝色光标成功应用联想超融合解决方案
  4. 八天学会MongoDB:第三天 细说高级操作
  5. nagios视频教程【原创】
  6. 软件测试面试问答大全(2)
  7. textarea去掉回车换行
  8. SessionLocaleResolver
  9. linux ls命令 --time-style选项 日期时间格式控制
  10. cmake 静态编译 简介