PHP 板


LINE

看板 PHP  RSS
~x0 PTT实业坊 FROM:ta009 STATUS REPORT 制表日期:07/09/17 15:18:09 页次:1 ============================================================================== MODEL NO. DECRIPTION DEPART M.O NO. DATE -------------------- --------------- ----------- ---------- -------- 100-2164-32C ASSY PWB HIGAIN 4438 W02-790185 07/09/13 100-2223-01BR6 PWB ASSY,HRU-40 4438 W02-790217 07/09/14 ============================================================================== (csfr069) (接下页)~i 以上是报表内容 以下是我的写法 $day_list = fopen('schedule.txt','r'); $buf=fread($day_list,filesize('schedule.txt')); fclose($day_list); $theData = explode("\n", $buf ); //先用段行做为切割标准,切出每一行资料 $i=filesize('schedule.txt'); $k=0; /*以下是取出报表中的资料 以" "为切割点取每行头一笔资料 因为头尾行数是固定,所以只要阵列中第一行为"~x0" 就直接往下跳8行到资料行里*/ for($j=0;$j<=$i;$j++){ $txt = split(" ", $theData[$j]); if( $txt[0]=="~x0"){ $j=$j+8; } else if($txt[0] == "(csfr069)"){ $j=$j+8; $k=$k-1;} //这里是因为我之前切不出来"==" //但是因为资料行固定的原因,所以只要头档是"(csfr069)" //就把上一行资料丢弃 else{ $beta[$k]=$theData[$j]; $k++;} } //取出来就只剩表报中的资料行,并存在阵列$beta中 $print = split(" ",$beta[0]);//就是这边卡很久 //因为不知道没有固定长的空格该如何切 //感谢gpmm跟dinos兄的方法,我会试看看的 $z=0; foreach ($print as $value) { $z++; echo "第$z 笔资料为:"; echo "$value <br>"; } //印出切完的资料 ※ 引述《dinos (守护神)》之铭言: : 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 (银色)》之铭言: : : [苏珊] : : 写了一下,不确定你的需求,所以应该不完全合用 : : 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: 203.73.255.34
1F:→ dinos:这种报表是定长度的 直接取固定长度 09/24 15:35







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:e-shopping站内搜寻

TOP