日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

為自己的asp網(wǎng)站系統(tǒng)構(gòu)建一套標(biāo)記語言_asp技巧-ASP編程-華夏名網(wǎng)資訊中心 虛擬主機(jī)...

 悟靜 2011-02-07
  • 為自己的asp網(wǎng)站系統(tǒng)構(gòu)建一套標(biāo)記語言_asp技巧
  •   作為動態(tài)網(wǎng)站在建設(shè)過程中難免遇見在線編輯文章的問題。HTML提供了一個textarea標(biāo)記,不過實際上沒有解決這個問題,因為從textarea的是純文本。除非在輸入的時候使用了HTML標(biāo)記,否則在輸出的時候?qū)@得從頭到尾毫無結(jié)構(gòu)的一盤文字。WEB設(shè)計中通過DHTML構(gòu)建一類所見即所得的在線編輯器對這個問題有了非常好的解決。

      不過所見即所得并不是唯一的解決辦法。筆者在上網(wǎng)過程中發(fā)現(xiàn)一些門戶網(wǎng)站的在線編輯器非常有特色。他并不是所見即所得(不過提供了一個預(yù)覽功能),而是個textarea的文本域,不過又不支持HTML標(biāo)記語言。而是有他自己的一套標(biāo)記語言。


    圖1

    圖2

      筆者使用覺得非常流暢,總結(jié)其好處如下:

      第一, 他的標(biāo)記不多,相對于HTML而言非常簡單,而且通過回車能自動生成段落,容易被一般用戶所接受。筆者認(rèn)為如果使用中文標(biāo)記,能被更多國內(nèi)用戶接受。

      第二, 相對所見即所得的編輯器而言用戶更能掌控自己的文章結(jié)構(gòu),生成亂碼少。

      第三, 可見性相對于HTML而言要好得多,加上預(yù)覽功能后更佳。

      第四, 由于自己的標(biāo)記語言不支持腳本,因而是更安全的.

      經(jīng)過筆者一番思考和實踐,現(xiàn)把構(gòu)建這種屬于自己的標(biāo)記語言的方法公示:

      首先,我們?yōu)樽约旱木W(wǎng)站確定一套簡單而必要的標(biāo)記語言。確定時把一些不必要的省略。拿我而言,我為自己的網(wǎng)站確定的標(biāo)記語言如下:

      [圖片]圖片的網(wǎng)址[/圖片]
      [大標(biāo)題]文字內(nèi)容[/大標(biāo)題]
      [小標(biāo)題]文字內(nèi)容[/小標(biāo)題] (考慮到用戶可能會細(xì)分所以加上)
      [粗體]文字內(nèi)容[/粗體]
      [斜體]文字內(nèi)容[/斜體]
      [鏈接]網(wǎng)址[/鏈接]

      然后,提供一定的機(jī)制,讓瀏覽器讀懂我們的標(biāo)記.那么,怎么讓瀏覽器讀懂我們自己確定的標(biāo)記呢? 在內(nèi)容顯示的頁面,我們需要寫一個程式將我們的所有標(biāo)記翻譯成為標(biāo)準(zhǔn)的HTML標(biāo)記,不過此前必須過濾掉用戶輸進(jìn)來的HTML代碼。

      第一步:過濾HTML代碼.

      這個其實非常簡單,只要將所有的 “<” 標(biāo)簽替換為 “<” ,另外把所有 “>” 替換為 “>” 就能了。在ASP中通過如下語句實現(xiàn):

    Content=replace(content,”<”,”<”)

    Content=replace(content,”>”,”>”)

      (以上代碼中,content是儲存了我們要顯示的內(nèi)容的變量,下文中若出現(xiàn)也表示相同的意思。)

      第二步:將我們的標(biāo)記翻譯為HTML

      這個相對復(fù)雜一些,因為并不是簡單的將所有[標(biāo)簽替換為<和]替換為>然后將里面的中文(比如圖片)翻譯為英文(比如IMG)就能的。原因有兩個:

      1 是我們的標(biāo)記里面的內(nèi)容,根據(jù)不同的分類需要做不同的處理:

      第一類,直接顯示給用戶的,比如:

    [大標(biāo)題]文字[/大標(biāo)題]

      此時確實是只要將標(biāo)簽翻譯成相應(yīng)的英文,比如上面的標(biāo)記翻譯為

    文字

    就能了.

      第二類,不直接呈現(xiàn)給用戶的,比如:

    [圖片]圖片網(wǎng)址[/圖片]

      此時,標(biāo)簽中間的內(nèi)容”圖片網(wǎng)址”只是我們要顯示的網(wǎng)址,在HTML中是作為標(biāo)簽的SRC屬性,而且這個標(biāo)簽在HTML中是不要結(jié)尾標(biāo)簽的.所以直接翻譯的結(jié)果是肯定錯誤的.

      第三類,直接呈現(xiàn)同時又作為屬性,比如:

      [鏈接]網(wǎng)址[/鏈接]

      2 是并非所有出項標(biāo)記的地方都是要翻譯的,比如,有時候用戶需要用符號”[“和符號”]”來表現(xiàn)他們的內(nèi)容,而這時候如果將這樣的標(biāo)記翻譯為”<”和”>”肯定不是符合用戶的心意的。

      分析了出現(xiàn)的問題,筆者將在下面給出編寫程式的思路參考和一個參考的程式.

      由于不同的標(biāo)簽需要的翻譯方式不相同,所以必須針對不同的標(biāo)簽,一個個的翻譯.

      對于所有單個的標(biāo)記,一篇文章內(nèi)可能出現(xiàn)多此,也可能一次也不出現(xiàn),程式應(yīng)當(dāng)從頭到尾首先檢查某一標(biāo)記的開始標(biāo)記(比如對”圖片]圖片地址[/圖片]”是”[圖片]”)出現(xiàn)的位置,一旦檢查到了,然后從那個位置開始檢查結(jié)束標(biāo)記,如果也檢查到了,則說明這是我們要的標(biāo)記;如果結(jié)束標(biāo)記沒有檢查到,那么說明那不是我們要的標(biāo)記,而只是用戶自己展示的內(nèi)容。檢查到之后,將標(biāo)記翻譯為HTML標(biāo)記,并根據(jù)不同類型對標(biāo)記中的內(nèi)容作不同的處理.坐完以后從結(jié)束標(biāo)記的位置又繼續(xù)檢查,直到文章結(jié)束。

      實際編寫中,需要用到遞歸的思想.下面給出翻譯[圖片]圖片地址[/圖片]這個標(biāo)記的范例程式.

    Function TranslateImg(Str)
     Start=instr(str,”[圖片]”) ‘檢查標(biāo)記的開始位置
     If start=0 then exit function ‘開始位置為0,表示沒有這個標(biāo)記,那么程式結(jié)束
     End=instr(start,str,”[/圖片]” ‘檢查繼該開始位置之后所出現(xiàn)的結(jié)束標(biāo)記位置
     If end=0 then exit function ‘結(jié)束標(biāo)記出現(xiàn)位置為0,表示沒有結(jié)束標(biāo)記,程式結(jié)束
     MidStr=mid(str,start+4,end-start-4) ‘標(biāo)記中間的內(nèi)容
     ReplaceStr=mid(str,start,end-start+5) ‘標(biāo)記中間的內(nèi)容加上標(biāo)記,作為將要替換的內(nèi)容
     Str=replace(instr,ReplaceStr,””) ‘將標(biāo)記翻譯為HTML
     TranslateImg Str ‘遞歸執(zhí)行該函數(shù)
    End Function

      通過以上分析,相信讀者能夠通過自己的分析為自己的網(wǎng)站構(gòu)建一套”MyHTML”標(biāo)記語言了。

      在實際的研發(fā)中還會有一些課題需要攻破,比如:標(biāo)記嵌套的處理;是在將用戶提交到數(shù)據(jù)庫之前就翻譯還是待用戶瀏覽文章從數(shù)據(jù)庫中調(diào)出來時才翻譯;為用戶提供一些自動插入標(biāo)記的按鈕方便用戶的操作體驗登.本文僅作拋磚引玉之用希望引得讀者一點欣賞。
    • 本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
      轉(zhuǎn)藏 分享 獻(xiàn)花(0

      0條評論

      發(fā)表

      請遵守用戶 評論公約

      類似文章 更多