PHP文本操作類
更新時(shí)間:2006年11月25日 00:00:00 作者:
復(fù)制代碼 代碼如下:
<?php
class CtbClass {
var $file;
var $index;
//建立一個(gè)文件并寫入輸入
function null_write($new)
{
$f=fopen($this->file,"w");
flock($f,LOCK_EX);
fputs($f,$new);
fclose($f);
}
// 添加數(shù)據(jù)記錄到文件末端
function add_write($new) {
$f=fopen($this->file,"a");
flock($f,LOCK_EX);
fputs($f,$new);
fclose($f);
}
// 配合readfile()的返回一起使用,把一行數(shù)據(jù)轉(zhuǎn)換為一維數(shù)組
function make_array($line) {
$array = explode("\x0E",$line);
return $array;
}
//把為一維數(shù)組轉(zhuǎn)換一行數(shù)據(jù)
function join_array($line) {
$array = join("\x0E",$line);
return $array;
}
// 返回?cái)?shù)據(jù)文件的總行數(shù)
function getlines() {
$f=file($this->file);
return count($f);
}
// 返回下一行的數(shù)據(jù)記錄(備用)
function next_line() {
$this->index=$this->index++;
return $this->get();
}
// 返回上一行的數(shù)據(jù)記錄(備用)
function prev_line() {
$this->index=$this->index--;
return $this->get();
}
// 返回當(dāng)前行的數(shù)據(jù)記錄數(shù)據(jù)較小
function get() {
$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;
}
// 返回當(dāng)前行的數(shù)據(jù)記錄數(shù)據(jù)較大
function get_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;
}
// 打開數(shù)據(jù)文件---以一維數(shù)組返回文件內(nèi)容
function read_file() {
if (file_exists($this->file)) {
$line =file($this->file);
}
return $line;
}
// 打開數(shù)據(jù)文件---以二維數(shù)組返回文件內(nèi)容
function openFile() {
if (file_exists($this->file)) {
$f =file($this->file);
$lines = array();
foreach ($f as $rawline) {
$tmpline = explode("\x0E",$rawline);
array_push($lines, $tmpline);
}
}
return $lines;
}
// 傳入一個(gè)數(shù)組,合并成一行數(shù)據(jù),重寫整個(gè)文件
function overwrite($array){
$newline = implode("\x0E",$array);
$f = fopen($this->file,"w");
flock($f,LOCK_EX);
fputs($f,$newline);
fclose($f);
}
// 添加一行數(shù)據(jù)記錄到文件末端
function add_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);
}
// 插入一行數(shù)據(jù)記錄到文件最前面
function insert_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);
}
// 更新所有符合條件的數(shù)據(jù)記錄,適用于每行字節(jié)數(shù)據(jù)較大的情況
function update($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<count($fc);$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);
}
// 更新所有符合條件的數(shù)據(jù)記錄,適用于每行字節(jié)數(shù)據(jù)較小的情況
function update2($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);
}
// 刪除所有符合條件的數(shù)據(jù)記錄,適用于每行字節(jié)數(shù)據(jù)較大的情況
function delete($column,$query_string) {
$newfile = "";
$fc=file($this->file);
$f=fopen($this->file,"r");
flock($f,LOCK_SH);
for ($i=0;$i<count($fc);$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);
}
// 刪除所有符合條件的數(shù)據(jù)記錄,適用于每行字節(jié)數(shù)據(jù)較小的情況
function delete2($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);
}
//取得一個(gè)文件里某個(gè)字段的最大值
function get_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;
}
// 根據(jù)數(shù)據(jù)文件的某個(gè)字段是否包含$query_string進(jìn)行查詢,以二維數(shù)組返回所有符合條件的數(shù)據(jù)
function select($column, $query_string) {
$tline = $this->openfile();
$lines = array();
foreach ($tline as $line) {
if ($line[$column] == $query_string) {
array_push($lines, $line);
}
}
return $lines;
}
// 功能與function select()一樣,速度可能略有提升
function select2($column, $query_string) {
if (file_exists($this->file)) {
$tline = $this->read_file();
foreach ($tline as $tmpLine) {
$line = $this->make_array($tmpLine);
if ($line[$column] == $query_string) {
$lines[]=$tmpLine;
}
}
}
return $lines;
}
// 根據(jù)數(shù)據(jù)文件的某個(gè)字段是否包含$query_string進(jìn)行查詢,以一維數(shù)組返回第一個(gè)符合條件的數(shù)據(jù)
function select_line($column, $query_string) {
$tline = $this->read_file();
foreach ($tline as $tmpLine) {
$line = $this->make_array($tmpLine);
if ($line[$column] == $query_string) {
return $line;
break;
}
}
}
// select next/prev line(next_prev ==> 1/next, 2/prev) by cx
function select_next_prev_line($column, $query_string, $next_prev) {
$tline = $this->read_file();
$line_key_end = count($tline) - 1;
$line_key = -1;
foreach ($tline as $tmpLine) {
$line_key++;
$line = $this->make_array($tmpLine);
if ($next_prev == 1) { // next?
if ($line[$column] == $query_string) {
if ($line_key == 0) {
return 0;
} 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) {
return 0;
} else {
$line_key_down = $line_key + 1;
break;
}
}
} else {
return 0;
}
}
$down_line = $this->make_array($tline[$line_key_down]);
return $down_line;
}
}
?>
class CtbClass {
var $file;
var $index;
//建立一個(gè)文件并寫入輸入
function null_write($new)
{
$f=fopen($this->file,"w");
flock($f,LOCK_EX);
fputs($f,$new);
fclose($f);
}
// 添加數(shù)據(jù)記錄到文件末端
function add_write($new) {
$f=fopen($this->file,"a");
flock($f,LOCK_EX);
fputs($f,$new);
fclose($f);
}
// 配合readfile()的返回一起使用,把一行數(shù)據(jù)轉(zhuǎn)換為一維數(shù)組
function make_array($line) {
$array = explode("\x0E",$line);
return $array;
}
//把為一維數(shù)組轉(zhuǎn)換一行數(shù)據(jù)
function join_array($line) {
$array = join("\x0E",$line);
return $array;
}
// 返回?cái)?shù)據(jù)文件的總行數(shù)
function getlines() {
$f=file($this->file);
return count($f);
}
// 返回下一行的數(shù)據(jù)記錄(備用)
function next_line() {
$this->index=$this->index++;
return $this->get();
}
// 返回上一行的數(shù)據(jù)記錄(備用)
function prev_line() {
$this->index=$this->index--;
return $this->get();
}
// 返回當(dāng)前行的數(shù)據(jù)記錄數(shù)據(jù)較小
function get() {
$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;
}
// 返回當(dāng)前行的數(shù)據(jù)記錄數(shù)據(jù)較大
function get_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;
}
// 打開數(shù)據(jù)文件---以一維數(shù)組返回文件內(nèi)容
function read_file() {
if (file_exists($this->file)) {
$line =file($this->file);
}
return $line;
}
// 打開數(shù)據(jù)文件---以二維數(shù)組返回文件內(nèi)容
function openFile() {
if (file_exists($this->file)) {
$f =file($this->file);
$lines = array();
foreach ($f as $rawline) {
$tmpline = explode("\x0E",$rawline);
array_push($lines, $tmpline);
}
}
return $lines;
}
// 傳入一個(gè)數(shù)組,合并成一行數(shù)據(jù),重寫整個(gè)文件
function overwrite($array){
$newline = implode("\x0E",$array);
$f = fopen($this->file,"w");
flock($f,LOCK_EX);
fputs($f,$newline);
fclose($f);
}
// 添加一行數(shù)據(jù)記錄到文件末端
function add_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);
}
// 插入一行數(shù)據(jù)記錄到文件最前面
function insert_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);
}
// 更新所有符合條件的數(shù)據(jù)記錄,適用于每行字節(jié)數(shù)據(jù)較大的情況
function update($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<count($fc);$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);
}
// 更新所有符合條件的數(shù)據(jù)記錄,適用于每行字節(jié)數(shù)據(jù)較小的情況
function update2($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);
}
// 刪除所有符合條件的數(shù)據(jù)記錄,適用于每行字節(jié)數(shù)據(jù)較大的情況
function delete($column,$query_string) {
$newfile = "";
$fc=file($this->file);
$f=fopen($this->file,"r");
flock($f,LOCK_SH);
for ($i=0;$i<count($fc);$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);
}
// 刪除所有符合條件的數(shù)據(jù)記錄,適用于每行字節(jié)數(shù)據(jù)較小的情況
function delete2($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);
}
//取得一個(gè)文件里某個(gè)字段的最大值
function get_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;
}
// 根據(jù)數(shù)據(jù)文件的某個(gè)字段是否包含$query_string進(jìn)行查詢,以二維數(shù)組返回所有符合條件的數(shù)據(jù)
function select($column, $query_string) {
$tline = $this->openfile();
$lines = array();
foreach ($tline as $line) {
if ($line[$column] == $query_string) {
array_push($lines, $line);
}
}
return $lines;
}
// 功能與function select()一樣,速度可能略有提升
function select2($column, $query_string) {
if (file_exists($this->file)) {
$tline = $this->read_file();
foreach ($tline as $tmpLine) {
$line = $this->make_array($tmpLine);
if ($line[$column] == $query_string) {
$lines[]=$tmpLine;
}
}
}
return $lines;
}
// 根據(jù)數(shù)據(jù)文件的某個(gè)字段是否包含$query_string進(jìn)行查詢,以一維數(shù)組返回第一個(gè)符合條件的數(shù)據(jù)
function select_line($column, $query_string) {
$tline = $this->read_file();
foreach ($tline as $tmpLine) {
$line = $this->make_array($tmpLine);
if ($line[$column] == $query_string) {
return $line;
break;
}
}
}
// select next/prev line(next_prev ==> 1/next, 2/prev) by cx
function select_next_prev_line($column, $query_string, $next_prev) {
$tline = $this->read_file();
$line_key_end = count($tline) - 1;
$line_key = -1;
foreach ($tline as $tmpLine) {
$line_key++;
$line = $this->make_array($tmpLine);
if ($next_prev == 1) { // next?
if ($line[$column] == $query_string) {
if ($line_key == 0) {
return 0;
} 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) {
return 0;
} else {
$line_key_down = $line_key + 1;
break;
}
}
} else {
return 0;
}
}
$down_line = $this->make_array($tline[$line_key_down]);
return $down_line;
}
}
?>
相關(guān)文章
PHP開發(fā)規(guī)范手冊(cè)之PHP代碼規(guī)范詳解
對(duì)于PHP入門學(xué)習(xí)的童鞋來說,了解PHP開發(fā)規(guī)范可以少走很多彎路,網(wǎng)上各種PHP開發(fā)規(guī)范也很多,我結(jié)合自身使用PHP的情況,來說說我所理解的PHP開發(fā)規(guī)范。2011-01-01PHP封裝的svn類使用內(nèi)置svn函數(shù)實(shí)現(xiàn)根據(jù)svn版本號(hào)導(dǎo)出相關(guān)文件示例
這篇文章主要介紹了PHP封裝的svn類使用內(nèi)置svn函數(shù)實(shí)現(xiàn)根據(jù)svn版本號(hào)導(dǎo)出相關(guān)文件,結(jié)合實(shí)例形式分析了php封裝的svn操作類與根據(jù)版本導(dǎo)出相關(guān)版本文件操作技巧,需要的朋友可以參考下2018-06-06php批量刪除cookie的簡(jiǎn)單實(shí)現(xiàn)方法
這篇文章主要介紹了php批量刪除cookie的簡(jiǎn)單實(shí)現(xiàn)方法,實(shí)例分析了刪除單個(gè)cookie及數(shù)組遍歷的方式批量刪除cookie的技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下2015-01-01PHP簡(jiǎn)單判斷iPhone、iPad、Android及PC設(shè)備的方法
這篇文章主要介紹了PHP簡(jiǎn)單判斷iPhone、iPad、Android及PC設(shè)備的方法,可有效的判斷出移動(dòng)設(shè)備與PC端類型,需要的朋友可以參考下2016-10-10