當前位置:首頁文章首頁 IT學院 IT技術(shù)

教你如何利用ASP實現(xiàn)論壇的UBB功能

作者:  來源:  發(fā)布時間:2011-5-31 15:16:44  點擊:

本文章將給大家分享介紹到的是關(guān)于如何實現(xiàn)論壇的UBB功能,現(xiàn)在一起來看一下如何使用普通的VBScript腳本語言來實現(xiàn)功能強大的UBB功能吧。

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

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

  一、支持貼圖的UBB語法

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

  實例:[img]http://www.webjx.com/logo.gif[/img]

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

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

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

  [green]文字[/green] 

  等等

  實例:[blue]這是一段藍色的文字[/blue] 

  描述:上面的一段語法就是顯示一段藍顏色的文字

  三、支持超級連接的UBB代碼

  語法:連接地址 

  實例:http://www.webjx.com 

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

  四、支持Email地址的UBB語法

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

  實例:info@webjx.com 

  描述:上面的代碼結(jié)果就是顯示一個郵件地址,當你用鼠標點擊的時候,就會自動打開發(fā)送電子郵件的軟件,并將地址寫上。

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

  語法:一段文字等等

  實例:一段粗體的文字 

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

  好了,UBB代碼的核心功能就是上面的這些東西了,當然你還可以增加其他的種種功能因為這個UBB代碼的語法都是可以自定義的。

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

  InStr函數(shù)

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

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

  參數(shù)

  start 

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

  string1 

  必選項。接受搜索的字符串表達式。

  string2 

  必選項。要搜索的字符串表達式。

  compare 

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

  設(shè)置

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

  常數(shù)

  值

  描述

  vbBinaryCompare 

  0 

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

  vbTextCompare 

  1 

  執(zhí)行文本比較。

  返回值

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

  如果

  InStr返回

  string1為零長度

  0 

  string1為Null 

  Null 

  string2為零長度

  start 

  string2為Null 

  Null 

  string2沒有找到

  0 

  在string1中找到string2 

  找到匹配字符串的位置

  start > Len(string2) 

  0 

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

  Replace函數(shù)

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

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


  參數(shù)

  expression 

  必選項。字符串表達式包含要替代的子字符串。

  Find 

  必選項。被搜索的子字符串。

  Replacewith 

  必選項。用于替換的子字符串。

  Start 

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

  count 

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

  Compare 

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

  設(shè)置

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

  常數(shù)

  值

  描述

  vbBinaryCompare 

  0 

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

  vbTextCompare 

  1 

  執(zhí)行文本比較。

  返回值

  Replace返回以下值:

  如果

  Replace返回

  expression為零長度

  零長度字符串("")。

  expression為Null 

  錯誤。

  find為零長度

  expression的副本。

  replacewith為零長度

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

  start > Len(expression) 

  零長度字符串。

  count為0 

  expression的副本。

  這里我們應(yīng)當注意的自然也是這個Replace的Compare可選擇參數(shù)了,這樣我們在進行UBB代碼全程替換的時候才可以保證對大小寫的不敏感。

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

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

  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 '剔除多余標點符號

  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 '剔除多余標點符號

  end select 

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

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

  strOutput=strOutput&""&strLinkText&"" 

  iCurrentLocation=iLinkEnd '記錄下當前游標位置

  Loop 

  strOutput=strOutput&Mid(strInput,iCurrentLocation) 

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

  End Function 

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

文章評論

軟件按字母排列: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z