乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      用ASP實(shí)現(xiàn)論壇的UBB功能

       freezn 2006-01-06
      用ASP實(shí)現(xiàn)論壇的UBB功能

      http://www.  更新日期:2005-12-27  網(wǎng)頁教學(xué)網(wǎng)  瀏覽次數(shù): 122

        前幾日我曾經(jīng)閱讀到一篇技術(shù)文章講述如何使用VBScript中的正則表達(dá)式對(duì)象來實(shí)現(xiàn)論壇里面的UBB功能。VBScript提供的正則表達(dá)式對(duì)象功能非常強(qiáng)大,但是只有5。5以上的腳本引擎才可以很好的支持正則表達(dá)式對(duì)象,為了獲得版本是5。5的腳本引擎,你需要單獨(dú)安裝這個(gè)腳本引擎,或者安裝IE5.5,也就是說對(duì)服務(wù)器的要求比較苛刻,那就沒有其他的方法實(shí)現(xiàn)UBB功能了嗎?當(dāng)然不是了,現(xiàn)在就跟隨我一同來使用普通的VBScript腳本語言來實(shí)現(xiàn)功能強(qiáng)大的UBB功能吧。

        先,在UBB功能中,核心功能也即最吸引人的功能是完全支持貼圖功能和字體屬性的控制。因?yàn)槌鲇诎踩矫娴脑?,網(wǎng)絡(luò)上面的幾乎所有的論壇都盡可能的屏蔽掉了HTML代碼,這樣可以避免人為的有意無意的對(duì)論壇的破壞,這樣雖然保證了論壇自身的安全性,但是網(wǎng)友面對(duì)的貼子內(nèi)容就始終是一成不變的顏色、字體、大小,更不要奢望看到絢麗多彩的圖片了。UBB代碼由此而生,具體來說說我們?nèi)绾螌?shí)現(xiàn)以上的UBB核心功能。

        下面我們先來詳細(xì)描述一下我們將要實(shí)現(xiàn)的UBB代碼的語法:

        一、支持貼圖的UBB語法

        語法:[img]圖片路徑[/img] 

        實(shí)例:[img]http://www./logo.gif[/img]

        描述:上面語法的結(jié)果就是在網(wǎng)頁上面顯示出來一幅圖片

        二、支持字體顏色的UBB語法:

        語法:[red]文字[/red] 

        [green]文字[/green] 

        等等

        實(shí)例:[blue]這是一段藍(lán)色的文字[/blue] 

        描述:上面的一段語法就是顯示一段藍(lán)顏色的文字

        三、支持超級(jí)連接的UBB代碼

        語法:連接地址 

        實(shí)例:http://www. 

        描述:上面的語法的結(jié)果就是生成一段超級(jí)連接,當(dāng)你點(diǎn)擊的時(shí)候就會(huì)轉(zhuǎn)跳到連接的地址!

        四、支持Email地址的UBB語法

        語法:你的email地址[/email] 

        實(shí)例:info@ 

        描述:上面的代碼結(jié)果就是顯示一個(gè)郵件地址,當(dāng)你用鼠標(biāo)點(diǎn)擊的時(shí)候,就會(huì)自動(dòng)打開發(fā)送電子郵件的軟件,并將地址寫上。

        五、支持字體屬性的UBB語法

        語法:一段文字等等

        實(shí)例:一段粗體的文字 

        描述:上面代碼的結(jié)果就是顯示一段粗體的文字

        好了,UBB代碼的核心功能就是上面的這些東西了,當(dāng)然你還可以增加其他的種種功能因?yàn)檫@個(gè)UBB代碼的語法都是可以自定義的。

        在我們開始具體實(shí)現(xiàn)UBB功能之前,我們先來了解幾個(gè)重要的VBScript函數(shù):Instr函數(shù)和Replace函數(shù)。也許你看到這里忍不住想要說,這也太簡(jiǎn)單了吧,呵呵,其實(shí)這兩個(gè)函數(shù)的確是我們?cè)诰幊坍?dāng)中使用比較頻繁的兩個(gè)函數(shù),但是它也有自己的小秘密哦,我們先來看看這兩個(gè)函數(shù)的具體
      語法:

        InStr函數(shù)

        返回某字符串在另一字符串中第一次出現(xiàn)的位置。

        InStr([start, ]string1, string2[, compare]) 

        參數(shù)

        start 

        可選項(xiàng)。數(shù)值表達(dá)式,用于設(shè)置每次搜索的開始位置。如果省略,將從第一個(gè)字符的位置開始搜索。如果start包含Null,則會(huì)出現(xiàn)錯(cuò)誤。如果已指定compare,則必須要有start參數(shù)。

        string1 

        必選項(xiàng)。接受搜索的字符串表達(dá)式。

        string2 

        必選項(xiàng)。要搜索的字符串表達(dá)式。

        compare 

        可選項(xiàng)。指示在計(jì)算子字符串時(shí)使用的比較類型的數(shù)值。有關(guān)數(shù)值,請(qǐng)參閱"設(shè)置"部分。如果省略,將執(zhí)行二進(jìn)制比較。

        設(shè)置

        compare參數(shù)可以有以下值:

        常數(shù)

        值

        描述

        vbBinaryCompare 

        0 

        執(zhí)行二進(jìn)制比較。

        vbTextCompare 

        1 

        執(zhí)行文本比較。

        返回值

        InStr函數(shù)返回以下值:

        如果

        InStr返回

        string1為零長(zhǎng)度

        0 

        string1為Null 

        Null 

        string2為零長(zhǎng)度

        start 

        string2為Null 

        Null 

        string2沒有找到

        0 

        在string1中找到string2 

        找到匹配字符串的位置

        start > Len(string2) 

        0 

        大家應(yīng)當(dāng)注意到了,我們所要用的函數(shù)Instr的小秘密就是它的最后一個(gè)可選擇參數(shù)Compare,因?yàn)槲覀兊腢BB代碼需要大小寫不敏感的,默認(rèn)的情況下,函數(shù)Instr是要進(jìn)行二進(jìn)制匹配的,也就是說是對(duì)大小寫敏感的,所以記住了,這個(gè)Compare參數(shù)的值應(yīng)當(dāng)設(shè)置成為1才可以滿足我們的要求。

        Replace函數(shù)

        返回字符串,其中指定數(shù)目的某子字符串被替換為另一個(gè)子字符串。

        Replace(expression, find, replacewith[, compare[, count[, start]]])


        參數(shù)

        expression 

        必選項(xiàng)。字符串表達(dá)式包含要替代的子字符串。

        Find 

        必選項(xiàng)。被搜索的子字符串。

        Replacewith 

        必選項(xiàng)。用于替換的子字符串。

        Start 

        可選項(xiàng)。expression中開始搜索子字符串的位置。如果省略,默認(rèn)值為1。在和count關(guān)聯(lián)時(shí)必須用

        count 

        可選項(xiàng)。執(zhí)行子字符串替換的數(shù)目。如果省略,默認(rèn)值為-1,表示進(jìn)行所有可能的替換。在和start關(guān)聯(lián)時(shí)必須用。

        Compare 

        可選項(xiàng)。指示在計(jì)算子字符串時(shí)使用的比較類型的數(shù)值。有關(guān)數(shù)值,請(qǐng)參閱"設(shè)置"部分。如果省略,缺省值為0 ,這意味著必須進(jìn)行二進(jìn)制比較。

        設(shè)置

        compare參數(shù)可以有以下值:

        常數(shù)

        值

        描述

        vbBinaryCompare 

        0 

        執(zhí)行二進(jìn)制比較。

        vbTextCompare 

        1 

        執(zhí)行文本比較。

        返回值

        Replace返回以下值:

        如果

        Replace返回

        expression為零長(zhǎng)度

        零長(zhǎng)度字符串("")。

        expression為Null 

        錯(cuò)誤。

        find為零長(zhǎng)度

        expression的副本。

        replacewith為零長(zhǎng)度

        expression的副本,其中刪除了所有由find參數(shù)指定的內(nèi)容。

        start > Len(expression) 

        零長(zhǎng)度字符串。

        count為0 

        expression的副本。

        這里我們應(yīng)當(dāng)注意的自然也是這個(gè)Replace的Compare可選擇參數(shù)了,這樣我們?cè)谶M(jìn)行UBB代碼全程替換的時(shí)候才可以保證對(duì)大小寫的不敏感。

        其實(shí),實(shí)現(xiàn)UBB代碼的程序核心思想都是相同的,實(shí)現(xiàn)了其中的一個(gè),其他的也都是迎刃而解的了。下面我們以比較困難并且有代表性的……語法的實(shí)現(xiàn)為例來詳細(xì)講解如何實(shí)現(xiàn)他:

        首先,我們可以分析出來,在一段文章當(dāng)中,要實(shí)現(xiàn)這個(gè)功能,其實(shí)也就是將形式為http://.xxx的字符串找出來,并且加以適當(dāng)?shù)奶鎿Q,并且要全程替換,也就是說,你要設(shè)法記住你的每一步所在的位置,以便依次進(jìn)行替換,下面就是實(shí)現(xiàn)這個(gè)UBB語法的函數(shù)代碼:(里面有詳細(xì)注釋) 

        Function LinkURLs(strInput) 

        Dim iCurrentLocation 

        Dim iLinkStart 

        Dim iLinkEnd 

        Dim strLinkText 

        Dim strOutPut 

        ‘初始化變量

        strLinkText="" 

        strOutput="" 

        iCurrentLocation=1 

        Do while Instr(iCurrentLocation,strInput,"開始位置

        iLinkEnd=Instr(iCurrentLocation+1,strInput,"" TARGET=_blank>",1) ‘記錄下開始位置

        iLinkEnd=Instr(iCurrentLocation+1,strInput,"",1) ‘記錄下結(jié)束位置

        If iLinkEnd=0 then iLinkEnd=len(strINput)+1 

        select case Mid(strInput,iLinkEnd-1,1) 

        case ".","!","?" 

        iLinkEnd=iLinkEnd-1 ‘剔除多余標(biāo)點(diǎn)符號(hào)

        end select 

        stroutput=strOutput&Mid(strInput,iCurrentLocation,iLinkStart
      -iCurrentLocation) 

        strLinkText=replace(Mid(strInput,iLinkStart+5,iLinkEnd-iLinkStart
      -5),"" TARGET=_blank>",1)<>0 ‘查找UBB語法字符串

        iLinkStart=Instr(iCurrentLocation,strInput,"開始位置

        iLinkEnd=Instr(iCurrentLocation+1,strInput,"",1) ‘記錄下結(jié)束位置

        If iLinkEnd=0 then iLinkEnd=len(strINput)+1 

        select case Mid(strInput,iLinkEnd-1,1) 

        case ".","!","?" 

        iLinkEnd=iLinkEnd-1 ‘剔除多余標(biāo)點(diǎn)符號(hào)

        end select 

        stroutput=strOutput&Mid(strInput,iCurrentLocation,iLinkStart-iCurrentLocation) 

        strLinkText=replace(Mid(strInput,iLinkStart+5,iLinkEnd-iLinkStart-5),"","") 

        strOutput=strOutput&""&strLinkText&"" 

        iCurrentLocation=iLinkEnd ‘記錄下當(dāng)前游標(biāo)位置

        Loop 

        strOutput=strOutput&Mid(strInput,iCurrentLocation) 

        LinkURLs=replace(strOutput,"[/url]","",1,-1,1) 

        End Function 

        好了,通過上面的這個(gè)實(shí)現(xiàn)……功能的函數(shù),我們可以以此類推得到實(shí)現(xiàn)其他UBB語法的函數(shù),限于篇幅,我就不一一加以祥述了,你可以將這些函數(shù)放到一個(gè)文件中,形成一個(gè)UBB代碼函數(shù)庫,這樣就可以方便的在你的程序當(dāng)中加以引用了。

        怎么樣,通過我們自己的努力,現(xiàn)在我們的論壇也可以完全支持UBB代碼功能了,我們的論壇現(xiàn)在也會(huì)變得色彩斑斕,圖文并茂了,也必將會(huì)吸引到更多的網(wǎng)友,:) 

        關(guān)于上面文章的實(shí)際應(yīng)用例子,您可以在這里訪問到:Http://TechTop.Yeah.Net

        (以上所有程序均在Windows9x/NT,IIS/PWS,Access/SQL7上面運(yùn)行通過)

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多