PHP文本操作類
更新時(shí)間:2006年11月25日 00:00:00 作者:
復(fù)制代碼 代碼如下:
<?php
class CtbClass {
var $file;
var $index;
//建立一個(gè)文件并寫(xiě)入輸入
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;
}
// 打開(kāi)數(shù)據(jù)文件---以一維數(shù)組返回文件內(nèi)容
function read_file() {
if (file_exists($this->file)) {
$line =file($this->file);
}
return $line;
}
// 打開(kāi)數(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ù),重寫(xiě)整個(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è)文件并寫(xiě)入輸入
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;
}
// 打開(kāi)數(shù)據(jù)文件---以一維數(shù)組返回文件內(nèi)容
function read_file() {
if (file_exists($this->file)) {
$line =file($this->file);
}
return $line;
}
// 打開(kāi)數(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ù),重寫(xiě)整個(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中cURL?error?60:SSL?certificate?problem:?unable?to?
PHP中cURL錯(cuò)誤60通常表示SSL證書(shū)問(wèn)題,即無(wú)法獲取本地頒發(fā)機(jī)構(gòu)證書(shū),這通常是由于cURL無(wú)法驗(yàn)證遠(yuǎn)程服務(wù)器的SSL證書(shū)導(dǎo)致的,本給大家介紹了如何解決php中cURL?error?60,需要的朋友可以參考下2023-12-12
使用GROUP BY的時(shí)候如何統(tǒng)計(jì)記錄條數(shù) COUNT(*) DISTINCT
在有g(shù)roup by的時(shí)候,如何統(tǒng)計(jì)結(jié)果記錄的數(shù)量?需要的朋友可以參考下。2011-04-04
PHP 實(shí)現(xiàn)多服務(wù)器共享 SESSION 數(shù)據(jù)
稍大一些的網(wǎng)站,通常都會(huì)有好幾個(gè)服務(wù)器,每個(gè)服務(wù)器運(yùn)行著不同功能的模塊,使用不同的二級(jí)域名,而一個(gè)整體性強(qiáng)的網(wǎng)站,用戶系統(tǒng)是統(tǒng)一的,即一套用戶名、密碼在整個(gè)網(wǎng)站的各個(gè)模塊中都是可以登錄使用的。2009-08-08
改寫(xiě)函數(shù)實(shí)現(xiàn)PHP二維/三維數(shù)組轉(zhuǎn)字符串
將多維數(shù)組中所有的數(shù)值轉(zhuǎn)換成字符串最多支持三維數(shù)組,在給定的示例函數(shù)基礎(chǔ)上改寫(xiě)出了的,感興趣的朋友可以參考下,希望對(duì)大家有所幫助2013-09-09
php cookie中點(diǎn)號(hào)(句號(hào))自動(dòng)轉(zhuǎn)為下劃線問(wèn)題
這篇文章主要介紹了php cookie中點(diǎn)號(hào)(句號(hào))自動(dòng)轉(zhuǎn)為下劃線問(wèn)題,需要的朋友可以參考下2014-10-10
深入for,while,foreach遍歷時(shí)間比較的詳解
本篇文章是對(duì)for,while,foreach遍歷時(shí)間比較進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
利用Dockerfile文件部署php項(xiàng)目的全過(guò)程
環(huán)境部署一直是一個(gè)很大的問(wèn)題,無(wú)論是開(kāi)發(fā)環(huán)境還是生產(chǎn)環(huán)境,但是Docker將開(kāi)發(fā)環(huán)境和生產(chǎn)環(huán)境以輕量級(jí)方式打包,提供了一致的環(huán)境,下面這篇文章主要給大家介紹了關(guān)于利用Dockerfile文件部署php項(xiàng)目的相關(guān)資料,需要的朋友可以參考下2022-07-07
在所有的最簡(jiǎn)單的程序中,大多數(shù)對(duì)象都有一個(gè)標(biāo)識(shí),一個(gè)重要的商業(yè)應(yīng)用對(duì)象,例如一個(gè)Customer或者一個(gè)SKU,有一個(gè)或者更多的屬性---id,name,email地址,這樣可以把它從同一個(gè)類的其他實(shí)例區(qū)分開(kāi)來(lái)。此外,對(duì)象有一個(gè)恒定的標(biāo)識(shí):它是貫穿于整個(gè)應(yīng)用程序的一個(gè)唯一的標(biāo)識(shí),對(duì)于程序員來(lái)說(shuō),”customer A”在任何地方就是”customer A”,并且只要你的程序在持續(xù)運(yùn)行時(shí)"customer A"仍然是"customer A"。 但是一個(gè)對(duì)象不需要有一個(gè)標(biāo)識(shí)。有些對(duì)象僅僅是為了描述其他對(duì)象的屬性。2008-04-04

