Re: [請益] 讀檔取出資料(砍除文字檔標記)

看板PHP作者 (守護神)時間18年前 (2007/09/22 16:16), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串10/11 (看更多)
function checkNote($fn){ if(!file_exists($n))return false; $returnData=array(); $fr=@fopen($fn,"r"); if(!$fr)return false; while(($line=fgets($fr))!=false){ $line=trime($line,"\r\n"); /*** 略掉完全沒有中文字及空白的行 ***/ if(preg_match('/^[0x00-0x8f]*$/',$line))continue; /*** 略掉空白(\t\r\n\ )開頭的行 ***/ else if(preg_match('/^\s+/',$line))continue; /*** 略掉長度不足的行 ***/ else if(strlen($line)<6)continue; /*** 如果要切割字串再處理這一段 ***/ /*** $line=preg_split('/[\s]{2,}/',$line); ***/ $returnData[]=$line; } fclose($fr); return $returnData; } ※ 引述《gpmm (銀色)》之銘言: : ※ 引述《OpenGoodHate (你今天開好恨了嗎)》之銘言: : : 原來 split 用空白分隔 : [蘇珊] : 寫了一下,不確定你的需求,所以應該不完全合用 : function analysisText ($file) { : if (file_exists ($file)) { : $fp = fopen ($file, "r"); : $result = array (); : while (!feof ($fp)) { : $buffer = fgets ($fp, 4096); : /* : //資料行判定 : $preg = ""; : if (preg_match ($preg, $buffer)) : continue; : */ : //資料切割方式 : $preg = "/( ){2,}/"; : $arr = preg_split ($preg, $buffer); : array_push ($result, $arr); : } : return $result; : } : } : 這樣傳回來的 array 是以每一行為單位,切割過的 array, : 如果確定每行的第一組都是說明字串,那麼在使用上把他略過就可以了。 : 缺點是因為在後面做忽略,大筆檔案會使變數肥大, : 好的方式是在資料判定或資料切割方式那邊決定,只是因為不清楚你的需求, : 所以暫且這樣寫。 : 另,資料切割方式是切割超過兩個的空白,換言之, : "A B C D EF" 在切割過後是 : 1 123 12 123 (←此為空白數) : Array ( : [0]=>A B : [1]=>C D : [2]=>E : ) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.158.15
文章代碼(AID): #16zCz8Ot (PHP)
討論串 (同標題文章)
文章代碼(AID): #16zCz8Ot (PHP)