查看完整版本: 用C語言寫HTML TAG功能
頁: [1]

allan222 發表於 2017-4-11 11:28 PM

用C語言寫HTML TAG功能

想請教各位大大
如果我要用C寫出 HTML的標籤功能
例如:
<Insert> 就是輸入
他的輸入法就是 <Insert char = ‘ch’ num =‘##’>
舉例來說
Wow<Insertchar = ‘!’ num= ‘3’>That’s a good idea!
就會變成
Wow!!!That’s a good idea!<lower> </lower>就是把中間夾的字變小寫各位大大覺得我單純用字串比對的方法就可以寫這些標籤嗎?還有最麻煩部分就是萬一他有隨便插入標籤我也要查出來像:<Upper><Lower></Upper></Lower>就是錯的請問我該用什麼方法會比較好呢?
...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><div></div>

gs1458 發表於 2017-4-19 11:22 AM

本帖最後由 gs1458 於 2017-4-19 11:22 AM 編輯

你找尋的方向應該改為找尋過濾XML的方法,
HTML本來就是Base在XML格式下的產物,
如果你要硬幹程式的話,
用Regex是最快速簡單的方法。

o_g349 發表於 2017-9-12 09:36 PM

gs1458 發表於 2017-4-19 11:22 AM static/image/common/back.gif
你找尋的方向應該改為找尋過濾XML的方法,
HTML本來就是Base在XML格式下的產物,
如果你要硬幹程式的話,


不好意思,Regex 無法解決他的問題,因為 Regex 先天上就是屬於 finite state machine (有限狀態自動機) 的範疇,你看它的語法,標籤內有可能會有標籤,標籤互相圈套,這種語法屬於 pushdown automata 的問題,你要怎麼用 Regex 解決 pushdown automata 的問題? 你可以試試看,不過如果你可以證明你能用 Regex 做的出來的話,學術界的 automata theory 和 formal languages 大概就會被完全推翻,一般解決這個問題可以用 LL1、LR0、SLR1、LALR1、或 LR1,最常用的軟體是 yacc 或 bison,不過你的問題不大,只要用到 LL1 或是 LR0 就好,又因為你要自幹,所以寫一個小型的 recursive descent parser 應該是最合理的作法,再來因為你有可能對編譯器理論不熟,所以建議用 shunting yard algorithm 套上這個問題,然後再改成你希望的格式...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

gs1458 發表於 2017-10-21 10:57 AM

o_g349 發表於 2017-9-12 09:36 PM static/image/common/back.gif
不好意思,Regex 無法解決他的問題,因為 Regex 先天上就是屬於 finite state machine (有限狀態自動機)  ...

原來如此,
因為我之前有用正規查多層BBCode嵌套,
想說看起來問題差不多應該也行,
查了一下原來是有機會出問題的,
不過我有限制BBCode只能三層就是,
長知識了,謝謝。...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>
頁: [1]