当前位置:Linux教程 - Php - 文本数据库自定义函数集

文本数据库自定义函数集

<?php
/*************************************************
^^^^^^^^文本数据库自定义函数集0.2测试版^^^^^^^^^^^
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
此函数集适用于:以文本格式存储数据,以一行为一条记录,以分隔符分隔字段的文本结构数据库。
联系方法:[email protected]
技术支持:http://PHPLink.126.com
版权所有:PHP初学者联盟,未经允许不得删除版权信息
程序编写:xbrid
修改日期:2003.04.30
**************************************************/
/*
使用方法:
注意:在文本数据库中,如果使用关键字,此关键字最好要唯一,否则其删除修改时只会操作第一条记录。
text_append($filename,$linecon)→数据追加函数,返回1为成功,0为不成功
text_locate($filename,$keyword,$cutword,$colnum)→数据查找函数,如果查找到则返回此条记录,否则返回0
text_delete($filename,$keyword,$cutword,$colnum)→数据删除函数,如果有此记录则删除并返回1,否则返回0
text_modify($filename,$keyword,$cutword,$colnum,$modify)→数据修改函数,如果有此记录并修改成功返回1,否则返回0
text_insert($filename,$keyword,$cutword,$colnum,$insert)→数据插入函数,插入在关键字记录前
text_insertb($filename,$keyword,$cutword,$colnum,$insert)→数据插入函数,插入在关键字记录前
text_sort($filename,$cutword,$colnum,$mode)→数据排序函数,排序后文件被排序后生成的文件覆盖
text_select($filename,$keyword,$cutword,$colnum)→多条记录查找函数,返回多条与关键字相同的记录
text_find($filename,$keyword,$cutword,$colnum)→模糊查询函数,返回字段中包含关键字的所有记录


$filename→文件名
$linecon→要追加的内容
$keyword→查找或删除等操作时使用的关键字,此关键字要唯一。
$cutword→分隔符
$colnum→关键字(字段)所在的列,列是从0开始排列的
$modify→要修改的内容

修改或追加的内容要与本函数库适用的格式相符合
*/

//数据库追加函数
function text_append($filename,$linecon)
{
    
$fp=fopen($filename,"a");
    
flock($fp,2);
    
$file=fwrite($fp,$linecon);
    
fclose($fp);
    return
$file;
}
//文本数据库查找函数→结果是返回第一条记录
function text_locate($filename,$keyword,$cutword,$colnum)
{
    
$filelist=file($filename);
    
$listnum=count($filelist);
    for (
$i=0;$i<$listnum;$i++) {
        
$list=explode($cutword,$filelist[$i]);
        if (
$keyword==$list[$colnum]) {
            return
$list;
        }
    }
    return
0;
}
//文本数据库删除记录函数
function text_delete($filename,$keyword,$cutword,$colnum)
{
    
$filelist=file($filename);
    
$listnum=count($filelist);
    
$fp=fopen($filename,"w");
    
flock($fp,2);
    
$yesno=1;
    for (
$i=0;$i<$listnum;$i++) {
        
$list=explode($cutword,$filelist[$i]);
        if (
$keyword==$list[$colnum] and $yesno==1) {
            
$yesno=0;
            
$returnkey=1;
            continue;
        }
        
fputs($fp,$filelist[$i]);
    }
    
fclose($fp);
    if (empty(
$returnkey)) $returnkey=0;
    return
$returnkey;
}
//文本数据库修改记录函数
function text_modify($filename,$keyword,$cutword,$colnum,$modify)
{
    
$filelist=file($filename);
    
$listnum=count($filelist);
    
$fp=fopen($filename,"w");
    
flock($fp,2);
    
$yesno=1;
    for (
$i=0;$i<$listnum;$i++) {
        
$list=explode($cutword,$filelist[$i]);
        if (
$keyword==$list[$colnum] and $yesno==1) {
            
fputs($fp,$modify);
            
$yesno=0;
            
$returnkey=1;
            continue;
        }
        
fputs($fp,$filelist[$i]);
    }
    
fclose($fp);
    if (empty(
$returnkey)) $returnkey=0;
    return
$returnkey;
}
//文本数据库插入记录函数→插入以关键字为记录的前面
function text_insert($filename,$keyword,$cutword,$colnum,$insert)
{
    
$filelist=file($filename);
    
$listnum=count($filelist);
    
$fp=fopen($filename,"w");
    
flock($fp,2);
    for (
$i=0;$i<$listnum;$i++) {
        
$list=explode($cutword,$filelist[$i]);
        if (
$keyword==$list[$colnum]) {
            
fputs($fp,$insert);
        }
        
fputs($fp,$filelist[$i]);
    }
    
fclose($fp);
}
//文本数据库插入记录函数→插入以关键字为记录的后面
function text_insertb($filename,$keyword,$cutword,$colnum,$insert)
{
    
$filelist=file($filename);
    
$listnum=count($filelist);
    
$fp=fopen($filename,"w");
    
flock($fp,2);
    for (
$i=0;$i<$listnum;$i++) {
        
fputs($fp,$filelist[$i]);
        
$list=explode($cutword,$filelist[$i]);
        if (
$keyword==$list[$colnum]) {
            
fputs($fp,$insert);
            
$returnkey=1;
        }
    }
    
fclose($fp);
    if (empty(
$returnkey)) $returnkey=0;
    return
$returnkey;
}
//文本数据库排序
function text_sort($filename,$cutword,$colnum,$mode)
{
    
$list=file($filename);
    for (
$i=0;$i<count($list);$i++) {
        
$list1= explode($cutword, $list[$i]);
        
$list2[($list[$i])]=$list1[$colnum];
    }
    if (
$mode=="a") {
        @
asort($list2);
        @
reset($list2);
    }
    if (
$mode=="d") {
        @
arsort($list2);
        @
reset($list2);
    }
    for (
$all=0;$all<=count($list2);$all++) {
        
$newlist[] = key($list2);
        if (!(
next($list2))) break;
    }
    
$fp=fopen($filename,"w");
    
flock($fp,2);
    
$listnum=count($newlist);
    for (
$i=0;$i<$listnum;$i++) {
        
fputs($fp,$newlist[$i]);
    }
    
fclose($fp);
}
//文本数据库多条记录查找函数→返回所有与关键字相同的数据
function text_select($filename,$keyword,$cutword,$colnum)
{
    
$filelist=file($filename);
    
$listnum=count($filelist);
    for (
$i=0;$i<$listnum;$i++) {
        
$list=explode($cutword,$filelist[$i]);
        if (
$keyword==$list[$colnum]) {
            
$newlist[]=$filelist[$i];
        }
    }
    if (empty(
$newlist)) return 0;
    else return
$newlist;
}
//文本数据库模糊查找函数→返回所有包含关键字的数据
function text_find($filename,$keyword,$cutword,$colnum)
{
    
$filelist=file($filename);
    
$listnum=count($filelist);
    for (
$i=0;$i<$listnum;$i++) {
        
$list=explode($cutword,$filelist[$i]);
        if (
eregi($keyword,$list[$colnum])) {
            
$newlist[]=$filelist[$i];
        }
    }
    if (empty(
$newlist)) return 0;
    else return
$newlist;
}
//自定义的数组排序
function array_sort($list,$cutword,$colnum,$mode)
{
    for (
$i=0;$i<count($list);$i++) {
        
$list1= explode($cutword, $list[$i]);
        
$list2[$list[$i]]=$list1[$colnum];
    }
    if (
$mode=="a") {
        @
asort($list2);
        @
reset($list2);
    }
    if (
$mode=="d") {
        @
arsort($list2);
        @
reset($list2);
    }
    for (
$all=0;$all<count($list2);$all++) {
        
$newlist[]=key($list2);
        if (!(
next($list2))) break;
    }
    return
$newlist;
}
/*************************************************
^^^^^^^^文本数据库自定义函数集0.2测试版^^^^^^^^^^^
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
此函数集适用于:以文本格式存储数据,以一行为一条记录,以分隔符分隔字段的文本结构数据库。
联系方法:[email protected]
技术支持:http://PHPLink.126.com
版权所有:PHP初学者联盟,未经允许不得删除版权信息
程序编写:xbrid
写作日期:2003.04.30
**************************************************/
/*
使用方法:
text_append($filename,$linecon)→数据追加函数
$filename是文件名,$linecon是要追加的内容,此内容的格式要与文件的分隔格式相同
函数返回值:1为成功,0为不成功。


text_locate($filename,$keyword,$cutword,$colnum)→数据查找函数
$filename为文件名,$keyword为查找关键字,$cutword为分隔符,$colnum为关键字所在的列段,列段的起始号为0
函数返回值:有此记录则返回此记录的数组(以分隔符分隔后的数据),否则返回0
注意:返回的数据值是字段值,此条记录是数据库中的查找结果的第一条记录。


text_delete($filename,$keyword,$cutword,$colnum)→数据删除函数,关键字要唯一,否则会删除所有与关键字相同的记录
$filename为文件名,$keyword为删除关键字,$cutword为分隔符,$colnum为关键字所在的列段,列段的起始号为0
函数返回值:有此记录则删除并返回1,否则返回0


text_modify($filename,$keyword,$cutword,$colnum,$modify)→数据修改函数
$filename为文件名,$keyword为修改关键字,$cutword为分隔符,$colnum为关键字所在的列段,列段的起始号为0
$modify为修改后内容,格式要与文件分隔格式相同
函数返回值:有此记录则修改,并返回1,否则返回0
此函数不改变此记录所在行


text_insert($filename,$keyword,$cutword,$colnum,$insert)→数据插入函数,插入位置在关键字前
$filename为文件名,$keyword为关键字,$cutword为分隔符,$colnum为关键字所在的列段,列段的起始号为0
$insert为要插入的内容,其格式要与文件分隔格式相同
函数返回值:有关键字记录则在其前插入并返回1,否则不对文件作修改并返回0


text_insertb($filename,$keyword,$cutword,$colnum,$insert)→数据插入函数,插入位置在关键字后
$filename为文件名,$keyword为修改关键字,$cutword为分隔符,$colnum为关键字所在的列段,列段的起始号为0
$insert为要插入的内容,其格式要与文件分隔格式相同
函数返回值:有关键字记录则在其后插入并返回1,否则不对文件作修改并返回0


text_sort($filename,$cutword,$colnum,$mode)→数据排序函数
$filename为文件名,$cutword为分隔符,$colnum为关键字所在的列段,列段的起始号为0,$mode为排列方式,a为升序d为降序
函数返回值:此函数无返回值,排序后此文件被重新排序的文件覆盖,此函数使用时要注意此点。


text_select($filename,$keyword,$cutword,$colnum)→多条数据查找函数
$filename为文件名,$keyword为查找关键字,$cutword为分隔符,$colnum为关键字所在的列段,列段的起始号为0
函数返回值:如果有关键字的记录则返回所有与关键字相同的记录数据,否则返回0
注意:返回的是记录数据,与数据库的格式相同,需要重新进行分隔。


text_find($filename,$keyword,$cutword,$colnum)→数据模糊查询函数
$filename为文件名,$keyword为查找关键字,$cutword为分隔符,$colnum为关键字所在的列段,列段的起始号为0
函数返回值:返回查找字段中包含此关键字的所有记录数据,否则返回0
注意:返回的是记录数据,是多条数据,与数据库的格式相同,需要重新进行分隔。


array_sort($list,$cutword,$colnum,$mode)→《数组》排序函数
$list为数组名,$cutword为分隔符,$colnum为关键字所在的列段,列段的起始号为0,$mode为排列方式,a为升序d为降序
函数返回值:返回值是排序后的数组,格式与排序前的一样,显示内容时,需要进行重新分隔处理。



*/
?>