> 백엔드 개발 > PHP 튜토리얼 > 텍스트 파일 작업을 위한 PHP 클래스

텍스트 파일 작업을 위한 PHP 클래스

WBOY
풀어 주다: 2016-07-25 08:43:41
원래의
916명이 탐색했습니다.
  1. var $file
  2. var $index
  3. //파일 생성 및 입력
  4. 함수 null_write($new) {
  5. $f=fopen($this->file,"w")
  6. Flock($f,LOCK_EX)
  7. fputs($f,$new); 🎜> fclose($f);
  8. }
  9. // 파일 끝에 데이터 레코드를 추가합니다.
  10. function add_write($new) {
  11. $f=fopen($this->file ," a");
  12. 군중($f,LOCK_EX);
  13. fputs($f,$new)
  14. fclose($f)
  15. }
  16. // ) 데이터 행을 1차원 배열로 변환하려면 Return과 함께 사용하세요.
  17. function make_array($line) {
  18. $array =explore("\x0E",$line)
  19. return $array ;
  20. }
  21. //한 행의 데이터를 1차원 배열로 변환
  22. function Join_array($line) {
  23. $array = Join("\x0E",$line); array;
  24. }
  25. // 데이터 파일의 총 라인 수를 반환합니다.
  26. function getlines() {
  27. $f=file($this->file)
  28. return count; ($f);
  29. }
  30. // 다음 줄의 데이터 레코드를 반환합니다(백업)
  31. function next_line() {
  32. $this->index=$this->index ;
  33. return $this->get();
  34. }
  35. // 이전 줄의 데이터 레코드를 반환합니다(백업)
  36. function prev_line() {
  37. $this->index =$this->index--;
  38. return $this ->get()
  39. }
  40. // 현재 행의 데이터 레코드를 반환합니다.
  41. 함수 get () {
  42. $f=fopen($this->file,"r ")
  43. Flock($f,LOCK_SH)
  44. for($i=0;$i<=$this; ->index;$i ) {
  45. $rec=fgets($f, 1024)
  46. }
  47. $line=explode("\x0E",$rec); f);
  48. return $line;
  49. }
  50. // Return 현재 행의 데이터 레코드가 더 큽니다.
  51. function get_big_file() {
  52. $f=fopen($this-> 파일,"r");
  53. 군중($f,LOCK_SH)
  54. for($i=0;$i<=$this->index;$i ) {
  55. $rec=fgets ($f,1024*5);
  56. }
  57. $line=explode( "\x0E",$rec)
  58. fclose($f)
  59. return $line;
  60. // 데이터 파일 열기 --- 파일 내용을 1차원 배열로 반환
  61. function read_file() {
  62. if (file_exists($this->file)) {
  63. $ line =file($this->file);
  64. }
  65. return $line
  66. }
  67. // 데이터 파일 열기---파일 내용을 2차원 배열로 반환
  68. function openFile() {
  69. if (file_exists($this->file)) {
  70. $f = file($this->file)
  71. $lines = array()
  72. foreach ($f as $rawline) {
  73. $tmpline =explore("\x0E",$rawline); array_push($lines, $tmpline)
  74. }
  75. }
  76. return $lines;
  77. }
  78. // 배열을 전달하고 이를 한 줄의 데이터로 병합한 후 전체 파일을 다시 작성합니다.
  79. function overwrite($array){
  80. $newline = implode( "\x0E",$array);
  81. $f = fopen($this->file,"w")
  82. 떼($f,LOCK_EX)
  83. fputs($f,$newline) );
  84. fclose($f);
  85. }
  86. // 파일 끝에 데이터 레코드 한 줄 추가
  87. function add_line( $array,$check_n=1) {
  88. $s=implode("\x0E",$array);
  89. $f=fopen($this->file,"a")
  90. 떼($f,LOCK_EX); $f,$s);
  91. if ($check_n==1)
  92. fputs($f,"\n")
  93. fclose($ f)
  94. }
  95. // 파일 앞에 데이터 레코드 행을 삽입합니다.
  96. function insert_line($array) {
  97. $newfile = implode("\x0E",$array)
  98. $f = fopen($this- >file,"r");
  99. Flock($f,LOCK_SH);
  100. while ($line = fgets($f,1024)) {
  101. $newfile .= $line; }
  102. fclose($f);
  103. $f = fopen($this->file,"w")
  104. Flock($f,LOCK_EX); 새 파일);
  105. fclose($f)
  106. }
  107. // 모든 정규화된 데이터 레코드를 업데이트합니다. 각 행의 바이트 데이터가 큰 경우에 적합합니다.
  108. function update($column,$query_string,$update_array) {
  109. $update_string = implode("\ x0E ",$update_array);
  110. $newfile = "";
  111. $fc=file($this->file);
  112. $f=fopen($this->file,"r" ) ;
  113. 군중($f,LOCK_SH);
  114. for ($i=0;$i $list =explore("\x0E",$ fc [$i]);
  115. if ($list[$column] != $query_string) {
  116. $newfile = $newfile.chop($fc[$i])."\n"; } else {
  117. $newfile = $newfile.$update_string
  118. }
  119. }
  120. fclose($f)
  121. $f=fopen($this->file,"w " );
  122. Flock($f,LOCK_EX);
  123. fputs($f,$newfile);
  124. fclose($f);
  125. }
  126. // 조건에 맞는 모든 데이터 업데이트 레코드, 각 행의 바이트 데이터가 작은 경우에 적합
  127. function update2($column,$query_string,$update_array) {
  128. $newline = implode("\x0E",$update_array)
  129. $ newfile = "";
  130. $f = fopen($this->file,"r")
  131. Flock($f,LOCK_SH)
  132. while ($line = fgets($f, 1024 )) {
  133. $tmpLine =explore("\x0E",$line);
  134. if ($tmpLine[$column] == $query_string) {
  135. $newfile .= $newline
  136. } else {
  137. $newfile .= $line;
  138. }
  139. }
  140. fclose($f)
  141. $f = fopen($this->file,"w") ;
  142. Flock($f,LOCK_EX);
  143. fputs($f,$newfile);
  144. fclose($f);
  145. }
  146. // 해당되는 모든 데이터 레코드를 삭제합니다. 라인당 바이트 데이터가 큰 경우
  147. function delete($column,$query_string) {
  148. $newfile = ""
  149. $fc=file($this->file)
  150. $f=fopen($this->file,"r");
  151. Flock($f,LOCK_SH)
  152. for ($i=0;$i $list = 폭발("\x0E",$fc[$i])
  153. if ($list[$column] != $query_string) {
  154. $newfile = $newfile.chop ($fc[$i])."\n";
  155. }
  156. }
  157. fclose($f)
  158. $f=fopen($this->file,"w") ;
  159. Flock($f,LOCK_EX);
  160. fputs($f,$newfile);
  161. fclose($f);
  162. }
  163. // 적합 행당 바이트 데이터가 작은 상황
  164. function delete2($column,$query_string){
  165. $newfile = ""
  166. $f = fopen($this->file,"r ") ;
  167. Flock($f,LOCK_SH);
  168. while ($line = fgets($f,1024)) {
  169. $tmpLine =explore("\x0E",$line); ($tmpLine[$column] != $query_string) {
  170. $newfile .= $line
  171. }
  172. }
  173. fclose($f)
  174. $f = fopen( $this ->file,"w");
  175. Flock($f,$newfile)
  176. fclose($f); /파일에 있는 필드의 최대값 가져오기
  177. function get_max_value($column) {
  178. $tlines = file($this->file)
  179. for ($i=0;$ i< =count($tlines);$i ) {
  180. $line=explode("\x0E",$tlines[$i])
  181. $get_value[]=$line[$column]; }
  182. $get_max_value = max($get_value);
  183. return $get_max_value;
  184. }
  185. // 데이터 파일의 필드에 $query_string이 포함되어 있는지 여부를 기반으로 쿼리하여 2차원으로 반환합니다. array 기준에 맞는 모든 데이터
  186. function select($column, $query_string) {
  187. $tline = $this->openfile()
  188. $lines = array()
  189. foreach ( $tline as $line) {
  190. if ($line[$column] == $query_string) {
  191. array_push($lines, $line)
  192. }
  193. }
  194. return $lines ;
  195. }
  196. // function select()와 동일하며, 속도가 약간 향상될 수 있습니다.
  197. function select2($column, $query_string) {
  198. if (file_exists($this->file)) {
  199. $tline = $this->read_file();
  200. foreach ($tline as $tmpLine) {
  201. $line = $this->make_array($tmpLine)
  202. if ( $line[$ 열] == $query_string) {
  203. $lines[]=$tmpLine;
  204. }
  205. }
  206. }
  207. return $lines; / 데이터 파일에 따라 특정 필드에 $query_string이 포함되어 있는지 쿼리하고, 첫 번째 정규화된 데이터를 1차원 배열로 반환합니다.
  208. function select_line($column, $query_string) {
  209. $tline = $this-> read_file() ;
  210. foreach ($tline as $tmpLine) {
  211. $line = $this->make_array($tmpLine)
  212. if ($line[$column] == $query_string)
  213. return $line;
  214. break;
  215. }
  216. }
  217. }
  218. // cx로 다음/이전 줄 선택(next_prev ==> 1/next, 2/prev)
  219. function select_next_prev_line($column, $query_string, $next_prev) {
  220. $tline = $this->read_file()
  221. $line_key_end = count($tline) -
  222. $line_key; = -1 ;
  223. foreach ($tline as $tmpLine) {
  224. $line_key
  225. $line = $this->make_array($tmpLine)
  226. if ($next_prev == 1) {
  227. // 다음?
  228. if ($line[$column] == $query_string) {
  229. if ($line_key == 0) {
  230. return 0
  231. } else {
  232. $ line_key_up = $line_key - 1;
  233. return $up_line;
  234. }
  235. } else {
  236. $up_line = $line
  237. }
  238. } elseif ($next_prev == 2) {
  239. // 이전?
  240. if ($line[$column] == $query_string) {
  241. if ($line_key == $line_key_end) {
  242. return 0; else {
  243. $line_key_down = $line_key 1;
  244. }
  245. }
  246. } else {
  247. 0
  248. }
  249. $down_line = $this ->make_array($tline[$line_key_down]);
  250. return $down_line; }
  251. ?>
  252. 코드 복사
텍스트 파일, PHP

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿