テキスト ファイル操作のための PHP クラス

WBOY
リリース: 2016-07-25 08:43:41
オリジナル
892 人が閲覧しました
  1. var $file;
  2. var $index;
  3. // ファイルを作成し、入力を書き込みます
  4. function null_write($new) {
  5. $f=fopen($this-> file) ,"w");
  6. flock($f,$new);
  7. fclose($f); // ファイルの末尾にデータレコードを追加します
  8. function add_write( $new ) {
  9. $f=fopen($this->file,"a");
  10. fputs($f,$new); }
  11. // readfile() の return とともに使用され、データ行を 1 次元配列に変換します
  12. function make_array($line) {
  13. $array =explode("\x0E",$line)
  14. return $array); ;
  15. }
  16. / / 1行のデータを1次元配列に変換します
  17. function join_array($line) {
  18. $array = join("\x0E",$line)
  19. }
  20. // Returnデータファイルの総行数
  21. function getlines () {
  22. $f=file($this->file)
  23. return count($f); // 次の行のデータレコードを返します。 (backup)
  24. function next_line() {
  25. $this-> ;index=$this->index++;
  26. return $this->get(); }
  27. // 前の行のデータ レコードを返す (backup) )
  28. function prev_line() {
  29. $this->index=$ this->get();
  30. }
  31. // 現在の行のデータ レコードを返します。データが小さい
  32. function get() {
  33. $f=fopen($this-> file,"r");
  34. for($i=0;$i $rec=fgets($f,1024) ;
  35. $line=explode("\x0E",$rec);
  36. return $line;
  37. }
  38. // 現在の行のデータレコードを返します
  39. function get_big_file() {
  40. $f=fopen($this->file,"r");
  41. flock($f,LOCK_SH); ;
  42. for($i=0;$iindex;$i++) {
  43. $rec=fgets($f,1024*5) }
  44. $line=explode("\x0E") ,$rec);
  45. fclose($f);
  46. return $line; }
  47. // ファイルの内容を 1 次元配列として返します
  48. function read_file() {
  49. if (file_exists($) this->file)) {
  50. $line =file($this->file);
  51. return $ line
  52. }
  53. // データ ファイルを開きます --- ファイルの内容を 2 次元として返します配列
  54. function openFile() {
  55. if (file_exists($this->file)) {
  56. $f =file($this->file)
  57. foreach ($f as $); rawline) {
  58. $tmpline =explode("\x0E",$rawline);
  59. array_push($lines, $tmpline)
  60. }
  61. }
  62. return $lines }
  63. // 配列を渡してマージします。 1 行のデータを書き換え、ファイル全体を書き換えます
  64. function overwrite($array){
  65. $newline = implode("\x0E",$array);
  66. $ f = fopen($this->file,"w") ;
  67. flock($f,LOCK_EX);
  68. fputs($f,$newline);
  69. }
  70. // ファイルの末尾にデータ Record を追加します
  71. function add_line($array) ,$check_n=1) {
  72. $s=implode("\x0E",$array);
  73. $f=fopen($this->file,"a");
  74. flock($f,LOCK_EX); fputs($f,$s);
  75. if ($check_n==1)
  76. fputs($f,"\n");
  77. }
  78. // データ レコードの行をファイルの先頭
  79. function insert_line($array) {
  80. $newfile = implode("\x0E",$array)
  81. $f = fopen($this->file,"r") ; ,LOCK_SH);
  82. while ($line = fgets($f,1024)) {
  83. $newfile .= $line; }
  84. $f = fopen($this ->file," w");
  85. flock($f,LOCK_EX);
  86. fputs($f,$newfile);
  87. fclose($f);
  88. }
  89. // 各行のバイト データが大きい状況に適した、修飾されたデータ レコードをすべて更新します
  90. function update($column,$query_string,$update_array) {
  91. $update_string = implode("\x0E",$update_array) ;
  92. $newfile = "";
  93. $fc=file($this->file);
  94. flock($f,LOCK_SH); ($i=0;$i $list =explode("\x0E",$fc[$i]);
  95. if ($list[$column] != $ query_string) {
  96. $newfile = $newfile.chop($fc[$i])."\n";
  97. } else {
  98. $newfile = $newfile.$update_string
  99. }
  100. }
  101. fclose($f) ;
  102. $f=fopen($this->file,"w");
  103. flock($f,$newfile);
  104. fclose($f);すべての修飾されたデータ レコード。各行のバイト データが小さい場合に適しています
  105. function update2($column,$query_string,$update_array) {
  106. $newline = implode("\x0E",$update_array);
  107. $ newfile = "";
  108. $f = fopen($this->file,"r");
  109. flock($f,LOCK_SH)
  110. while ($line = fgets($f,1024)) {
  111. $tmpLine = ("\x0E",$line);
  112. if ($tmpLine[$column] == $query_string) {
  113. $newfile .= $newline; } else {
  114. $newfile .= $line; fclose($f);
  115. $f = fopen($this->file,"w");
  116. fputs($f,$newfile); this->file);
  117. $f=fopen($this->file,"r");
  118. for ($i=0;$i $list =explode("\x0E",$fc[$i]);
  119. if ($list[$column] != $query_string) {
  120. $newfile = $newfile.chop($ fc) [$i])."\n";
  121. }
  122. }
  123. fclose($f);
  124. flock($f,LOCK_EX); fputs($f,$newfile);
  125. fclose($f);
  126. }
  127. // 行あたりのバイト データが小さい場合に適した、すべての修飾されたデータ レコードを削除します
  128. function delete2($column,$query_string ){
  129. $newfile = "";
  130. $f = fopen($this->file,"r");
  131. while ($line = fgets($f,1024)); tmpLine =explode("\x0E",$line);
  132. if ($tmpLine[$column] != $query_string) {
  133. $newfile .= $line; }
  134. }
  135. fclose($f); = fopen($this->file,"w");
  136. flock($f,$newfile);
  137. fclose($f); // 最大値を取得ファイル内のフィールドの
  138. function get_max_value($column) {
  139. $tlines = file($this->file);
  140. for ($i=0;$i $line=explode("\x0E",$tlines[$i]);
  141. $get_value[]=$line[$column];
  142. $get_max_value = max($get_value); }
  143. // データ ファイル内のフィールドに $query_string が含まれているかどうかに基づいてクエリを実行し、修飾されたすべてのデータを 2 次元配列で返します
  144. function select($column, $query_string) {
  145. $tline = $this-> ;openfile ();
  146. $lines = array();
  147. foreach ($tline as $line) {
  148. if ($line[$column] == $query_string) {
  149. array_push($lines, $line);
  150. $lines を返す
  151. }
  152. // 関数は関数 select() と同じですが、速度がわずかに向上する可能性があります
  153. function select2($column, $query_string) {
  154. if (file_exists($this->file)) {
  155. $tline = $ this-> read_file();
  156. foreach ($tline として $tmpLine) {
  157. $line = $this->make_array($tmpLine);
  158. if ($line[$column] == $query_string); Lines[]= $tmpLine;
  159. }
  160. }
  161. }
  162. return $lines;
  163. }
  164. // データファイル内のフィールドに $query_string が含まれているかどうかに基づいてクエリを実行し、1 次元配列で最初の修飾されたデータを返します
  165. function select_line($ column, $query_string) {
  166. $tline = $this->read_file();
  167. foreach ($tline as $tmpLine) {
  168. $line = $this->make_array($tmpLine); ($line[ $column] == $query_string) {
  169. return $line;
  170. Break; }
  171. }
  172. }
  173. // 次の行/前の行を選択します(next_prev ==> 1/next, 2/prev) cx
  174. function select_next_prev_line ($column, $query_string, $next_prev) {
  175. $tline = $this->read_file();
  176. $line_key = -1; $tline as $ tmpLine) {
  177. $line_key++;
  178. $this->make_array($tmpLine);
  179. if ($next_prev == 1) {
  180. if ($line[$column] == $query_string ) {
  181. if ($line_key == 0) {
  182. return 0; } else {
  183. $line_key_up = $line_key - 1;
  184. return $up_line;
  185. $up_line = $line ;
  186. }
  187. } elseif ($next_prev == 2) {
  188. // 前? if ($line[$column] == $query_string) {
  189. return 0; } else {
  190. $line_key_down = $line_key + 1;
  191. ブレーク
  192. }
  193. }
  194. } else {
  195. return 0; }
  196. }
  197. $down_line = $this->make_array($tline[$line_key_down]);
  198. $down_line を返す
  199. }
  200. ?>
  201. コードをコピーします
  202. テキストファイル、php
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート