Re: [請益] 讀檔取出資料(砍除文字檔標記)
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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 10 之 11 篇):
PHP 近期熱門文章
PTT數位生活區 即時熱門文章