<tr align=center bgcolor=#FFFFFF>
<td><font size=2><a href="port_dst.asp?kind=MSER&port_sq=1398346&atmsq=3121">1</a></td>
<td nowrap><font size=2>1/1/1<br>1-1-1</font></td>
<td nowrap><font size=2>10GE</font></td>
<td nowrap>
<font color="blue" size=2 title="系統序號=10982"><a href='/sys/stm/sdh_QryStmSys.asp?stmsq=10982'>PCPC-PCPC -<font color='#228B22'>10GE</font>-14</a></font>
<br><font size='1'>[S]</font> <b><font color=red size=1 title='GroupID=103'>LAG(M)</font></b><br>
<font color="blue" size=2 title="序號="></font>
</td>
<td><font color="#8B0000" size=2>MSER</font></td>
<td><font color="#388E8E" size=2>ALCATEL-7750SR-12</font></td>
<td><font size=2>551</font></td>
<td nowrap><font size=2>1/1/2<br>1-1-2</font></td>
<td><font size=2></font></td>
<td><font color="#8B0000" size=2>MSER</font></td>
<td><font color="#388E8E" size=2>ALCATEL-7750SR-12</font></td>
<td><font size=2>501</font></td>
<td nowrap><font size=2>1/1/1<br>1-1-1</font></td>
<td><font size=2></font></td>
<td><font size=2>
0
</font></td>
<td><font size=2>
1
</font></td>
<td><font size=2>
0
</font></td>
<td><font size=2>
2
</font></td>
<td><font size=2>
<a href='http://10.16.3.28/resourcemgmt/facility/facilityShow.do?facsq=10982' target='_blank'>3</a></font>
</td>
<td><font size=2 color=red> </font></td>
<td><font size=2 color=red><font color=#4169E1>可用【A】</font></font></td>
<td><font size=2 color="#00008B"></font></td>
</tr>
這是 table 中的其中一筆資料
我想要把裡面的一些欄位值抓出來(用 preg_match_all 抓出所有的值)
(1)sdh_QryStmSys.asp?stmsq=10982 中的 10982
(2)PCPC-PCPC -10GE-14 中的 PCPC-PCPC-10GE-14
(3)size=2>MSER 中的 MSER
(4)size=2>ALCATEL-7750SR-12 中的 ALCATEL-7750SR-12
(5)size=2>551 中的 551
(6)size=2>1/1/21-1-2 中的 1/1/2
(7)size=2>MSER 中的 MSER
(8)size=2>ALCATEL-7750SR-12 中的 ALCATEL-7750SR-12
(9)size=2>501 中的 501
(10)size=2>1/1/11-1-1 中的 1/1/1
(11) 中的 0
0
(12) 中的 1
1
(13) 中的 0
0
(14) 中的 2
2
最後抓出這筆資料所有欄位的值
10982=>PCPC-PCPC-10GE-14=>MSER=>ALCATEL-7750SR-12=>551=>1/1/2=>MSER=>ALCATEL-7750SR-12=>501=>1/1/1=>0=>1=>0=>2
我只有寫出
10982 和 PCPC-PCPC-10GE-14(尚未加工)
接下來的資料在別行
不知道要怎麼寫
preg_match_all('#sdh_QryStmSys.asp\?stmsq=(\d+)\'>(.*)<\/a#',$f,$matches);
//$matches[1] 是 10982
//$matches[2] 是 PCPC-PCPC -<font color='#228B22'>10GE</font>-14(可再加工得到 PCPC-PCPC-10GE-14)
請問接下來怎麼做呢??
其實你都條列出來了,而且我覺的還蠻規律的 xD
寫個範例給你參考參考:
<?php
$html = file_get_contents("data.txt"); # 讀取你的範例 html
$datas = preg_match('@
<tr
.*stmsq=(\d+?) # (1)sdh_QryStmSys.asp?stmsq=10982 中的 10982
.*>(.*)</a> # (2)PCPC-PCPC -10GE-14 中的 PCPC-PCPC-10GE-14, 需再加工
.*size=2>(.*)< # (3)size=2>MSER 中的 MSER
.*size=2>(.*)< # (4)size=2>ALCATEL-7750SR-12 中的 ALCATEL-7750SR-12
.*size=2>(.*)< # (5)size=2>551 中的 551
.*size=2>(.*)< # (6)size=2>1/1/21-1-2 中的 1/1/2
.*size=2>.*< # skip a td
.*size=2>(.*)< # (7)size=2>MSER 中的 MSER
.*size=2>(.*)< # (8)size=2>ALCATEL-7750SR-12 中的 ALCATEL-7750SR-12
.*size=2>(.*)< # (9)size=2>501 中的 501
.*size=2>(.*)< # (10)size=2>1/1/11-1-1 中的 1/1/1
.*size=2>.*< # skip a td
.*size=2>.*(\d+) # (11) 中的 0 0
.*size=2>.*(\d+) # (12) 中的 1 1
.*size=2>.*(\d+) # (13) 中的 0 0
.*size=2>.*(\d+) # (14) 中的 2 2
.*
</tr>
@msxU', $html, $matches);
# 處理 PCPC-PCPC-10GE-14 中多餘的字元
$matches[2] = preg_replace('#\s|<.*?>#', "", $matches[2]);
for ($i = 1; $i <= 14; ++$i) {
echo "($i) ", $matches[$i], "\n";
}
輸出是:
(1) 10982
(2) PCPC-PCPC-10GE-14
(3) MSER
(4) ALCATEL-7750SR-12
(5) 551
(6) 1/1/2
(7) MSER
(8) ALCATEL-7750SR-12
(9) 501
(10) 1/1/1
(11) 0
(12) 1
(13) 0
(14) 2
我是覺得都用pref_match_all來抓,而沒有比較好的pattern時,困難度很大,建議你換個角度想。
例如用幾個步驟處理資料:
參考一下。