A class that is working in a text file in PHP
?
This article is reproduced from:
http://blog.9cbs.net/whzhaha/archive/2004/08/02/58825.aspx
?
Class? CTBClass? {?
?
?????? var? $ file;?????
??????? $ index;????
?
?? // Establish a file and write it?
?????? function? NULL_WRITE ($ NEW)?
?????? {????
???????????? $ f = fopen ($ this-> file, "w");????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????? fputs ($ f, $ new);?????
????????????? fclose ($ f);??
??????}?
?????? //? Add data to the end of the file?
?????? function? add_write ($ new)? {????
???????????? $ f = fopen ($ this-> file, "a");????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????? fputs ($ f, $ new);??????
????????????? fclose ($ f);??
??????}??
?? ?? ?? //? With the returning of readfile (), convert a line of data to a one-dimensional array?
?????? function? make_Array ($ line)? {?
???????????? $ array? =? EXPLODE ("/ x0e", $ line);?
???????????? Return? $ array;?
??????}?
?????????
???? ?? // convert a row of data for a one-dimensional array?
?????? function? join_Array ($ line)? {?
??????????? $ array? =? join ("/ x0e", $ line);?
???????????? Return? $ array;?
??????}?
?????? //? Return to the total number of data files?
?????? function? getLines ()? {?
??????????? $ f = file ($ this-> file);?????
???????????? Return? count ($ f);?????
??????}?
???? ?? //? Return to the next line of data record (alternate)?
?????? function? next_line ()? {?
???????????? $ this-> index = $ this-> index ;????
???????????? Return? $ this-> get ();?????
??????}?
?
???? ?? //? Return to the data record (standby)?
?????? function? prev_line ()? {??? ?????????? $ this-> index = $ this-> index -;??? ?
???????????? Return? $ this-> get ();?????
??????}????
?????? //? Returns the data record data of the current line?
?????? function? get ()? {?
??????????? $ f = fopen ($ this-> file, "r");????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????? for ($ i = 0; $ i <= $ this-> index; $ i )? {?
????????????? $ rec = fgets ($ F, 1024);?????
???????????????
??????????????????
????????????? fclose ($ f);?
???????????? Return? $ line;?????
??????}????
?????? //? Returns the data record data of the current line?
?????? function? get_big_file ()? {?
??????????? $ f = fopen ($ this-> file, "r");????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????? for ($ i = 0; $ i <= $ this-> index; $ i )? {?
???????????????? $ rec = fgets ($ F, 1024 * 5);????
???????????????
??????????????????
????????????? fclose ($ f);?
???????????? Return? $ line;?????
??????}????
???? ?? //? Open a data file --- Return to file content with a one-dimensional array?
?????? function? {? {?
????????????? (file_exists ($ this-> file)? {?
???????????????????????
???????????????
???????????? Return? $ line;?
??????}?
?????? //? Open a data file --- Return to the file in two-dimensional array?
?????? function? OpenFile ()? {?
????????????? (file_exists ($ this-> file)? {?
????????????????? $ f? = file ($ this-> file); ???????????? ????????? $ lines? =? array ();?
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????????? $ tmpline? =? EXPLODE ("/ x0e", $ rawline);?
????????????????? array_push ($ LINES, $ tmpline);?
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????
???????????? Return? $ LINES;?
??????}?
???? ?? //? Incorporate an array, merge into a line of data, rewrote the entire file?
?????? function? Overwrite ($ array) {?
???????????? $ newline? =? Implode ("/ x0e", $ array); ???????
???????????? $ f? =? FOPEN ($ this-> file, "w");?
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????? fputs ($ f, $ newline);?
????????????? fclose ($ f);?
??????}?
????
???? ?? //? Add a line of data to the end of the file?
???? ?? function? add_line ($ Array, $ Check_n = 1)? {???
???????????? $ s = IMPLODE ("/ x0e", $ array);?????
???????????? $ f = fopen ($ this-> file, "a");????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????? fputs ($ f, $ s);?????
??????????? i? ($ check_n == 1)? FPUTS ($ f, "/ n");?????
????????????? fclose ($ f);??
??????}?????
?
?????? //? Insert a line of data records to the front of the file?
???? ?? function? INSERT_LINE ($ array)? {?
???????????? $ newfile? =? Implode ("/ x0e", $ array);?
???????????? $ f? =? FOPEN ($ this-> file, "r");?
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????? ($ line? =? FGETS ($ f, 1024))? {?
???????????? $ newfile? =? $ line; ??? ???????????? }?
????????????? fclose ($ f);?
???????????? $ f? =? FOPEN ($ this-> file, "w");?
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????? fclose ($ f);?
??????}?
?
?? ?? ?? //? Update all the requirements for data records, apply to a larger case in one line byte data?
???? ?? function? Update ($ column, $ query_string, $ update_array)? {?
???????????? $ update_string? =? Implode ("/ x0e", $ update_Array);????
???????????? $ newfile? =? ""; ???????
???????????? $ fc = file ($ this-> file);?
???????????? $ f = fopen ($ this-> file, "r");?
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????? for? ($ i = 0; $ i)
???????????????? $ list? =? EXPLODE ("/ x0e", $ fc [$ i]);?
?????????????? ($ list [$ colorn]?! =? $ query_string)? {?
????????????????? $ newfile? =? $ newfile.chop ($ FC [$ I]). "/ n";?
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????????? $ newfile? =? $ newfile. $ update_string;?
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????
????????????? fclose ($ f);?
???????????? $ f = fopen ($ this-> file, "w");?
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????? fclose ($ f);?
??????}?
?
?????? //? Update all the qualified data records, apply to a small amount of data per line byte?
???? ?? function? Update2 ($ column, $ query_string, $ update_array)? {?
???????????? $ newline? =? Implode ("/ x0e", $ update_array);??????????????? ? $ newfile? =? "";?
???????????? $ f? =? FOPEN ($ this-> file, "r");?
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????? ($ line? =? FGETS ($ f, 1024))? {?
??????????????? $ tmpline? =? EXPLODE ("/ x0e", $ line);?
????????????? i? ($ TMPLINE [$ column]? ==? $ query_string)? {?
????????????????? $ newfile? =? $ newline;?
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????????? $ newfile? =? $ line;?
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????
????????????? fclose ($ f);?
???????????? $ f? =? FOPEN ($ this-> file, "w");?
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????? fclose ($ f);?
??????}?
?
???? ?? //? Delete all the requirements of the requirements, apply to a larger case in each line byte data?
???? ?? function? DELETE ($ column, $ query_string)? {?
???????????? $ newfile? =? ""; ???????
???????????? $ fc = file ($ this-> file);?
???????????? $ f = fopen ($ this-> file, "r");?
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????? for? ($ i = 0; $ i)
???????????????? $ list? =? EXPLODE ("/ x0e", $ fc [$ i]);?
?????????????? ($ list [$ colorn]?! =? $ query_string)? {?
????????????????? $ newfile? =? $ newfile.chop ($ FC [$ I]). "/ n";?
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????? fclose ($ f);?
???????????? $ f = fopen ($ this-> file, "w");?
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????? fclose ($ f);?
??????}?????
?
?? ?? ?? //? Delete all qualified data records, suitable for a small amount of data per line byte data?
?????? function? delete2 ($ column, $ query_string) {???
????????????? $ newfile? =? "";?
???????????? $ f? =? FOPEN ($ this-> file, "r");?
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????? ($ line? =? FGETS ($ f, 1024))? {?
??????????????? $ tmpline? =? EXPLODE ("/ x0e", $ line);?
?????????????? ($ tmpline [$ colorn]?! =? $ query_string)? {?
????????????????? $ newfile? =? $ line;?
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????
????????????? fclose ($ f);?
???????????? $ f? =? FOPEN ($ this-> file, "w");?
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????? fclose ($ f);?
??????}?
?
?? // Get the maximum value of a field in a file?
???? ?? function? get_max_value ($ colorn)? {?
???????????? $ tlines? =? file ($ this-> file);?
???????????? for? ($ i = 0; $ i <= count ($ tlows); $ i )? {?
????????????????????????
???????????????? $ get_value [] = $ line [$ colorn];?
???????????????
??? $ get_max_value? =? max ($ get_value);?
???????????? Return? $ get_max_value;?
??????}?
?
?
?? ?? ?? //? Whether to query $ query_string based on a field of the data file, return all the requirements for all eligible data in two-dimensional array ??? ?? ?? function? SELECT ($ column ,? $ query_string)? {?
???????????? $ tline? =? $ this-> openfile ();?
???????????? $ lines? =? array ();?
???????????? foreach? ($ tline? as? $ line)? {?
?????????????? i? ($ line [$ column]? ==? $ query_string)? {?
?????????????????? array_push ($ LINES, $ LINE);?
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????
?
???????????? Return? $ LINES;?
??????}?
?
???? ?? //? Function like Function? SELECT (), maybe the speed may increase slightly?
?????? function? SELECT2 ($ column, $ query_string? {?
????????????? (file_exists ($ this-> file)? {?
?????????????????? $ tline? =? $ this-> rd ();?
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????????? $ line? =? $ this-> make_Array ($ tmpline);?
??????????????????,? ($ tine [$ colorn]? ==? $ query_string)? { ?
???????????????????????? $ lines [] = $ tmpline;?
?????????????????????
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????
?
???????????? Return? $ LINES;?
??????}?
?
?? ?? ?? //? Whether to query $ query_string based on a field of the data file, return the first eligible data with a one-dimensional array?
?????? function? SELECT_LINE ($ column,? $ query_string)? {?
???????????? $ tline? =? $ this-> ied_file ();?
???????????? foreach? ($ tline? as? $ tmpline)? {?
?? ????????????????? $ line? =? $ this-> make_Array ($ tmpline);?
????????????? i? ($ line [$ column]? ==? $ query_string)? {??? ?? ??? ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????
??????}?
?????? //? SELECT? NEXT / prev? line (next_prev? ==>? 1 / next,? 2 / prev)? BY? CX?
???? ?? function? SELECT_NEXT_PREV_LINE ($ column, $ query_string,? $ nEXT_PREV)? {?
???????????? $ tline? =? $ this-> ied_file ();?
????????????????? -?? -? 1;?
???????????? $ line_key? =? -1;?
???????????? foreach? ($ tline? as? $ tmpline)? {?
??????????????????????
?? ????????????????? $ line? =? $ this-> make_Array ($ tmpline);?
????????????? i? ($ next_prev? ==? 1)? {? //? next??
??????????????????,? ($ tine [$ colorn]? ==? $ query_string)? { ?
???????????????????????? i ($ line_key? ==? 0 )? {?
??????????????????????? Return?????? 0;?
???????????????????????????
?????????????????????????????? $ line_key_up ? =? $ line_key? -? 1;?
??????????????????????? Return?????? $ UP_LINE;?
????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????? $ up_line? =? $ line;?
?? ????????????????????????? ?? ?? ??}? Elseif? ($ next_prev? ==? 2)? {?? //? prev??
??????????????????,? ($ tine [$ colorn]? ==? $ query_string)? { ?
?????????????????????????, ($ line_key? ==? $ LINE_KEY_END? {?
??????????????????????? Return?????? 0;?
???????????????????????????
??????????????????????????????? $ line_key_down ? =? $ line_key? ? 1;?
?????????????????????????????????? ?
????????????????????????????
?????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????? Return? 0;?
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????
???????????? $ down_LINE? =? $ this-> make_array ($ tline [$ line_key_down]);?
???????????? Return? $ down_line;?
??????}?
?
?
?
} ??