Mình có một file lớn (khoảng vài trăm ngàn dòng), mỗi dòng là một số nguyên kiểu int.Nhờ mọi người cách nhanh nhất để truy xuất đến một dòng bất kì trong file.VD5689141211Ví dụ mình muốn truy xuất đến dòng thứ 6 và tăng giá trị của nớ lên 1. Cảm ơn mọi người quan tâm.

Đang xem: Các hàm xử lý file trong php

*

Anh tham khảo những đoạn code này xem sao …
functiongetLine($file,$lineno){$line=false;$fp=fopen($file,”r”);while(!feof($fp)&&$lineno–){$line=fgets($fp);}fclose($file);return($lineno==0)?$line:false;}//firstcountnumoflinenowyouputinarrayyourreplacefunctionreadWrite($data$){$file=file($data);$i=1;//thethrowyou”dliketochange(1meansthesecondrow)$yourArray=array(“purple”,”grey”,”pink”,”cyan”);$row=explode(“,”,$file<$i>);for($j=0;$jcount($row);$j++){$row<$j>=$yourArray<$j>;}$file<$i>=implode(“,”,$row).”
“;$content=implode(“”,$file);$open=fopen($data,”w”);fwrite($open,$content);}//$data=”yourFile.txt”;
$key=”strawberry4″;$newline=”blackberry”;//copyfiletopreventdoubleentry$file=”file.txt”;$newfile=”filetemp.txt”;copy($file,$newfile)orexit(“failedtocopy$file”);//loadfileinto$linesarray$fc=fopen($file,”r”);while(!feof($fc)){$buffer=fgets($fc,4096);$lines<>=$buffer;}fclose($fc);//opensamefileanduse”w”toclearfile$f=fopen($newfile,”w”)ordie(“couldn”topen$file”);/*uncommenttodebugprint_r($lines);print”
“;*///loopthrougharrayusingforeachforeach($linesas$line){fwrite($f,$line);//place$linebackinfileif(strstr($line,$key)){//lookfor$keyineachlinefwrite($f,$newline.”
“);}//place$linebackinfile}fclose($f);copy($newfile,$file)orexit(“failedtocopy$newfile”);?>
$handle=file_get_contents(“file.txt”,NULL);$a=”darkedeneurope.comce”;$a=str_replace(“,”,””,$a);$a=explode(“”,$a);$c=0;foreach($aas$y){if(stristr($handle,”$a<$c>“))$b<>=”yes”;else$b<>=”no”;$c++;}echo$handle;if(in_array(“no”,$b))echo”didnotmatch”;elseecho”wehaveamatch”;?>
//Hok chắc sẽ giải quyết dc nhưng chắc là giúp dc tí gì đó…

Chỉ có 1 cách là đọc file vào và đến dòng 6, fix rồi ghi ngược trở lại. File chỉ có cách đọc tuần tự (hoặc theo byte) chứ không có đọc theo dòng.Tham khảo các hàm explode và implode.

Anh tham khảo những đoạn code này xem sao …

Xem thêm: Tải Mod Skin Lol, Phần Mềm Mod Skin Lol Pro 2020, 2021, Download Mod Skin Lol

//Hok chắc sẽ giải quyết dc nhưng chắc là giúp dc tí gì đó…
Chỉ có 1 cách là đọc file vào và đến dòng 6, fix rồi ghi ngược trở lại. File chỉ có cách đọc tuần tự (hoặc theo byte) chứ không có đọc theo dòng.Tham khảo các hàm explode và implode.
Anh Khương nói rõ hơn được không, hoặc cho em link tham khảo, em google đọc file trong php theo bye mà không thấy.Thực ra mỗi dòng của em chỉ là một số kiểu int, vì xử lí dữ liệu lớn nên dọc tuần tự tốn khá nhiều thời gian, nên em muốn đọc thẳng vào byte thứ n nào đó, như vậy sẽ tiết kiệm được khá lớn thời gian.
Anh Khương nói rõ hơn được không, hoặc cho em link tham khảo, em google đọc file trong php theo bye mà không thấy.Thực ra mỗi dòng của em chỉ là một số kiểu int, vì xử lí dữ liệu lớn nên dọc tuần tự tốn khá nhiều thời gian, nên em muốn đọc thẳng vào byte thứ n nào đó, như vậy sẽ tiết kiệm được khá lớn thời gian.

Xem thêm: Hitman Free Download Hitman Games For Windows, Hitman 2 Pc Game Download Full Version Free

Đọc theo byte không giúp ích gì cho trường hợp này vì file này vốn không được biểu diễn để truy xuất ngẫu nhiên.Truy xuất thẳng vào byte thứ n trong file thì ngôn ngữ nào cũng hỗ trợ nhưng Vấn đề đầu tiên là với cách biểu diễn này em không thể xác định được n. Một số int được biểu diễn số bằng một chuỗi ký tự, vậy độ dài mỗi chuỗi này lại khác nhau và phân cách chỉ bằng ký tự xuống dòng, cách duy nhất xác định dòng thứ x ở byte bao nhiêu là đọc tuần tự toàn file và đếm số ký tự xuống dòng. Vấn đề thứ hai khi sửa một dòng, nếu như dòng đó dài hơn ban đầu vậy số byte dư ra em bỏ vào đâu bây giờ.Nếu kích thước dữ liệu lớn, lại cần phải truy xuất ngẫu nhiên thì ngay từ đầu em cần chọn một cách biểu diễn và lưu trữ phù hợp hơn là text file đơn giản thế này.

Related Post

Leave a Reply

Your email address will not be published. Required fields are marked *