[wizs] 把相關資料列表改成html格式

看板mud_sanc作者 (揮淚斬馬雲)時間4年前 (2019/07/05 15:22), 編輯推噓0(001)
留言1則, 1人參與, 4年前最新討論串1/1
例如說底下是一個簡單的列表 編號 物品名 價錢 ============================== 1 眼藥水 350 2 防蚊液 250 3 發泡錠 180 ============================== 首先把所有的空白都改成單空白,並把 = 拿掉 編號 物品名 價錢 1 眼藥水 350 2 防蚊液 250 3 發泡錠 180 然後把每一行的前後加上 <tr> 跟 </td></tr> <tr> 編號 物品名 價錢</td></tr> <tr> 1 眼藥水 350</td></tr> <tr> 2 防蚊液 250</td></tr> <tr> 3 發泡錠 180</td></tr> 接著對每一行的 str 每一字元做判斷 j=0; new_str=""; if(str[i..i]!=" ") new_str+=str[i..i]; else { if(j==0) { new_str+="<td>"; j=1; } else new_str+="</td><td>"; } 就會變成底下 <tr><td>編號</td><td>物品名</td><td>價錢</td></tr> <tr><td>1</td><td>眼藥水</td><td>350</td></tr> <tr><td>2</td><td>防蚊液</td><td>250</td></tr> <tr><td>3</td><td>發泡錠</td><td>180</td></tr> 前後再加一下 <table border=2> 及 </table> <table border=2> <tr><td>編號</td><td>物品名</td><td>價錢</td></tr> <tr><td>1</td><td>眼藥水</td><td>350</td></tr> <tr><td>2</td><td>防蚊液</td><td>250</td></tr> <tr><td>3</td><td>發泡錠</td><td>180</td></tr> </table> 如果把上面編成 html 檔,執行起來如下 https://i.imgur.com/eZs5kmj.jpg
這裡就會產生一個有趣的猜想: 以上能否透過函數來做? 過往我是修改列表函數,在函數內加上 html 化的相關程式段, 以前有 demo 過就是 sanc 全防具列表。 現在看起來好像可以先列表出來,再透過函數把列表結果 html 化。 例如虛擬物品列表 > vobjs -list 編號 名稱 設定者 單位 性 質 攜帶 價錢 賣店 交易 ============================================================================ a001 測試物品 laechan 個 怪掉落 1 100000 不可 不可 a002 測試箱子 laechan 個 測試物 1 10 不可 不可 b001 哀唱草袋子 laechan 袋 怪掉落 10 14112 不可 b002 腐臭花袋子 laechan 袋 怪掉落 10 15925 不可 ============================================================================ 寫 running code if(1) { mixed strs; string str,new_str="",tmp_str=""; int s,ii; str=@LONG 編號 名稱 設定者 單位 性 質 攜帶 價錢 賣店 交易 ============================================================================ a001 測試物品 laechan 個 怪掉落 1 100000 不可 不可 a002 測試箱子 laechan 個 測試物 1 10 不可 不可 b001 哀唱草袋子 laechan 袋 怪掉落 10 14112 不可 b002 腐臭花袋子 laechan 袋 怪掉落 10 15925 不可 ============================================================================ LONG ; str=substr(str," "," "); strs=explode(str,"\n"); foreach(str in strs) { tmp_str=""; if(str[ii..ii]!="=") { s=strlen(str); for(ii=0;ii<s;ii++) { if(str[ii..ii]==" ") tmp_str+="</td><td>"; else tmp_str+=str[ii..ii]; } new_str+="<tr><td>"+tmp_str+"</td></tr>\n"; } } new_str="<table border=2>\n"+new_str+"\n</table>\n"; write(new_str); } ==執行結果== <table border=2> <tr><td>編號</td><td>名稱</td><td>設定者</td><td>單位</td><td>性質</td><td> 攜帶</td><td>價錢</td><td>賣店</td><td>交易</td></tr> <tr><td>a001</td><td>測試物品</td><td>laechan</td><td>個</td><td>怪掉落 </td><td>1</td><td>100000</td><td>不可</td><td>不可</td></tr> <tr><td>a002</td><td>測試箱子</td><td>laechan</td><td>個</td><td>測試物 </td><td>1</td><td>10</td><td>不可</td><td>不可</td></tr> <tr><td>b001</td><td>哀唱草袋子</td><td>laechan</td><td>袋</td><td>怪掉落 </td><td>10</td><td>14112</td><td></td><td>不可</td></tr> <tr><td>b002</td><td>腐臭花袋子</td><td>laechan</td><td>袋</td><td>怪掉落 </td><td>10</td><td>15925</td><td></td><td>不可</td></tr> </table> ==執行結果== https://i.imgur.com/0VG1qWJ.jpg
嘛,理論上是可行的,實際上則會產生一些問題就是了。 看起來在列表時就做 html 化會比較簡單一點,如果是列表後才做 的話可能丟給 javascript 幫忙做會比較準確一點。 Laechan -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.33.66.104 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/mud_sanc/M.1562311368.A.CA2.html

07/05 15:23, 4年前 , 1F
其實還有更簡單的做法只是我不想那樣子做而已
07/05 15:23, 1F
文章代碼(AID): #1T7lh8oY (mud_sanc)