php文本文件操作,PHP文本操作类
复制代码 代码如下:<?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文本操作类相关推荐
- NodeJs基础之字节操作、路径操作和文本操作
字节操作 buffer对象 构造函数 new Buffer(size) 参数为数值,表示分配空间的长度 new Buffer(string,[encoding]) 参数为字符串,表示存入Buffer的 ...
- 操作EXCEL和符号分隔文本的类CSpreadSheet .
操作EXCEL和符号分隔文本的类CSpreadSheet 此文为转发网上文档! http://www.oschina.net/question/76782_12420 简介 CSpreadSheet是 ...
- php文本教学,php中文本操作的类
给大家一个简单的文本操作的类. 我以前写的,不过一直都没机会用了,文本不如数据库.数据是以行保存的,以\n结尾,注意你输入的数据必须以"\n"结尾的,这是几个最基本的类成员,文本的 ...
- 火山视窗文本数组类增删查改操作
本源码转载自利快云https://www.lkuaiy.com/ 火山视窗文本数组类增删查改操作 文本数组类可对文本型数据进行数组操作,本类可以非常方便的实现对文本数组的增删查改. 一.添 ...
- HTML中设置鼠标悬停状态伪类,四大伪类,css鼠标样式设置,reset操作,静止对文本操作...
本文将要为您介绍的是四大伪类,css鼠标样式设置,reset操作,静止对文本操作,教程操作方法:07.31自我总结 一.a标签的四大伪类 a:link{样式} 未访问时的状态(鼠标点击前显示的状态) ...
- 【Delphi入门】文件系统(文件分类 文件文本变量 文件操作 文件流操作)
文件分类 文本文件(TextFile) & 二进制文件(Flie) 二进制形式存放数据占有存储空间较少,但不直观:文本文件与之相反 文件是由相同类型的数据元素组成的序列.在DELPHI中对文件 ...
- Visual C++——《可视化编程技术》实验报告——绘图与文本操作
一.实验目的和要求 1.掌握Windows应用程序的基本结构: 2.使用API函数建立窗口.消息循环,编制窗口函数: 3.使用API函数在用户区绘图.输出文本,理解Windows的图形设备接口. 二. ...
- VC++编程中的文件操作API和CFile类
VC++编程中的文件操作API和CFile类 在VC编程中,操作文件的方法主要有两种:利用API函数和MFC的CFile类.微软在其中封装了文件的一般操作,下面我就介绍一下如何利用这两种方法实现文件操 ...
- 文本操作的相关概念和方法+pickle序列化+csv文件操作+操作系统命令(os和os.path)+shutil模块+zipfile模块+递归算法打印目录树
目录 一.文件操作 1.文本文件和二进制文件 2.文件操作相关模块概述 3.文件文本的写入 4.中文乱码问题的解决 5.close()关闭文件流--try异常管理 6.关闭流要点:_with上下文管理 ...
最新文章
- 网络分流器-网络分流器IP网络路由交换测试技术探讨
- 你是合格的程序员吗?(欢迎大家自测)
- 记下来 关于InitCommonControls()
- z = x++ - --y * b/a;
- 库存管理-历史库存和收发存系列-MB5B
- 基于LAMP实现web日志管理查看
- java 内存快照怎么看_jvm内存快照dump文件太大,怎么分析
- linux网络IO模型
- 如何防止盗号 使用windows自带的 屏幕键盘 OSK
- 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。
- Oracle分页查询
- 光立方体c语言程序,444光立方程序C语言源代码 - 444光立方程序怎么写 光立方原理图、源代码及制作教程...
- 基于Javaweb校园二手交易平台源码及截图
- ie8 ajax 缓存问题,IE8/IE9下Ajax缓存问题
- 智能家居系统解决方案
- 微信小程序之电子商场的设计以及实现
- 图片如何缩小到100k?怎么把图片压缩到指定大小?
- TypeScript(ts)笔记总结01
- 蓝桥杯2022年第十三届决赛真题-修路
- k8s 部署 TCP node应用